다른 깊이의 .gitignore 파일을 --exclude-from'ing하는 동안 Rsync 폴더

다른 깊이의 .gitignore 파일을 --exclude-from'ing하는 동안 Rsync 폴더

그래서 다음과 같은 구조로 소스 폴더를 rsync하는 명령을 작업하려고 합니다.

- app.js
- .gitignore
- src/
- src/logs/
- src/logs/.gitignore

첫 번째 .gitignore에는 일련의 파일이 무시됩니다. 전형적인 것들. 두 번째는 다음과 같습니다.

*
!.gitignore

이 기술은 내부에 파일이 전혀 없는 디렉터리를 체크인하려는 경우에 사용됩니다. 디렉토리 전체에 더 많은 .gitignore가 있을 수도 있습니다. 이는 단지 하나의 시나리오일 뿐입니다.그래서 제 질문은 이렇습니다: rsync가 해당 디렉터리에 관련된 모든 .gitignores를 해석하도록 할 수 있습니까?

나의 초기 시도는 다음과 같습니다.

  1. 디렉토리의 모든 .gitignores를 Glob합니다.
  2. 다음과 같은 빌드 명령을 생성합니다.

rsync --exclude-from=.gitignore --exclude-from=src/logs/.gitignore --exclude-from=some/other/folder/.gitignore [source] [destination]

그러나 이것은 나에게 예상대로 작동하지 않았습니다. 모든 .gitignore 파일이 루트에 있는 것처럼 읽기 때문에 모든 것이 무시됩니다. 모든 .gitignores를 grep하고 루트 디렉토리에 상대적인 경로를 모두 다시 작성한 하나의 마스터 파일을 만들지 않고도 이 작업을 수행할 수 있는 방법이 있습니까?

감사해요!

답변1

이는 rsync에게 각 디렉터리에서 파일을 찾도록 지시합니다 .gitignore.

rsync --filter='dir-merge,-n /.gitignore' [...]

그러면 당신이 원하는 대로 될 것입니다.

-n의 는 dir-merge( -) 파일이 제외만 지정하고 ( n) 규칙이 하위 디렉터리에 상속되지 않음을 의미합니다.

관련 정보