그래서 다음과 같은 구조로 소스 폴더를 재동기화하는 명령을 사용하려고 합니다.
- app.js
- .gitignore
- src/
- src/logs/
- src/logs/.gitignore
첫 번째 .gitignore는 파일 목록을 무시합니다. 전형적인 것들. 두 번째는 다음과 같습니다.
*
!.gitignore
이 기술은 파일이 없는 디렉터리를 체크인하려는 경우 사용할 수 있습니다. 디렉토리 전체에 더 많은 .gitignores가 있을 수 있습니다. 이는 단지 하나의 사례일 뿐입니다.그래서 제 질문은: rsync가 해당 디렉터리에 관련된 모든 .gitignores를 해석하도록 할 수 있습니까?
내 초기 시도는 다음과 같습니다.
- 디렉토리의 모든 .gitignore를 전역적으로 표시합니다.
- 빌드 명령은 다음과 같습니다.
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
) 규칙이 하위 디렉터리에 상속되지 않음을 나타냅니다 .