![Unison은 경로를 무시하지 않습니다.](https://rvso.com/image/1568466/Unison%EC%9D%80%20%EA%B2%BD%EB%A1%9C%EB%A5%BC%20%EB%AC%B4%EC%8B%9C%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내 동기화에서 및 디렉터리를 .git
무시 .bundle
하려고 합니다 . node_module
나는 그것이 작동하도록 하기 위해 다양한 조합을 시도해 보았지만 동기화할 때마다 원격 시스템에 동기화되는 모든 디렉터리를 볼 수 있습니다.
내가 뭘 잘못하고 있는지 알아낼 수 있는 사람이 있나요?
~/.unison/default.prf
# Roots of the synchronization
root = /Users/bob/synced
root = ssh://bob@remotebox/synced
# Paths to synchronize
path = hack/testdir
# Some regexps specifying names and paths to ignore
ignore = Name *.log
ignore = Name .DStore
ignore = Name .DS_Store
ignore = Name *.output
ignore = Name *:*
ignore = Path {*/.git/*}
ignore = Path {*/.bundle/*}
ignore = Path {*/.vagrant/*}
ignore = Path {*/.git}
ignore = Path {*/.bundle}
ignore = Path {*/node_modules}
# Window height
height = 37
# propogate file modification times
times = true
# Log actions to the terminal
log = true
auto = true
batch = true
도움이 된다면 OSX에서 Windows 10으로 동기화하는 것입니다.
답변1
다음은경로 지정 및 경로 무시Unison 매뉴얼의 섹션은 Unison에 대한 질문에 답할 때 제가 가장 좋아하는 섹션이기 때문입니다. 는 ignore Name = name
마지막 구성요소가 일치하는 모든 경로를 무시합니다 name
. 또한
[문자]는 이름 시작 부분에 사용된 경우 를 포함하지 않고 로 시작하지 않는
*
모든 문자 시퀀스와 일치합니다 ./
.
따라서 특정 파일 형식을 무시하는 것처럼 경로를 무시할 수 있습니다. .git
, .bundle
및 node_module
모두 선행 문자가 있지만 /
a로 시작하는 숨겨진 디렉토리에서 찾을 수 있다는 사실을 고려하면 .
다음 줄이 원하는 것입니다.
ignore = Name {*/,.*/}.git
ignore = Name {*/,.*/}.bundle
ignore = Name {*/,.*/}node_module
전체 디렉터리를 동기화하는 사람에게는 root
이것이 다루지 않는 불행한 코너 케이스가 있습니다. 이러한 파일이 root
동기화 중인 디렉터리의 최상위 수준에 있는 경우 선행 문자가 없습니다 /
. 위 프로필에서는 디렉토리만 testdir
라인과 동기화되므로 이 문제는 방지됩니다 path = hack/testdir
. 어쨌든 전체 루트 디렉터리를 동기화하는 사람의 경우 .*,*
globbing 패턴과 같은 것을 추가할 수 있지만 이러한 패턴은 일치합니다.어느같은 이름의 파일 foo.git
. 따라서 디렉토리 .git
의 최상위 수준에 등 이라는 이름의 디렉토리/파일이 없도록 결정하거나 다음 root
과 같은 항목도 일치해도 괜찮다면 다음 foo.git
행을 사용할 수 있습니다.
ignore = Name {.*,*,*/,.*/}.git
ignore = Name {.*,*,*/,.*/}.bundle
ignore = Name {.*,*,*/,.*/}node_module