경고하다

경고하다

내 도트 파일을 대부분의 파일(.vimrc, .tmux.conf 등)에 적합하게 작동하는 bitbucket의 개인 git 저장소에 보관한 다음 도트를 복제할 홈 디렉터리에서 파일을 설정하기만 하면 됩니다. 파일은 gitrepo에 대한 심볼릭 링크이며 모든 것이 훌륭하게 작동합니다.

내 문제는 zsh 플러그인을 관리하기 위해 prezto 프레임워크도 사용하고 있다는 것입니다. Prezto는 비슷한 작업을 수행합니다. 모든 .zprezto* 구성 파일을 홈 디렉터리의 심볼릭 링크와 함께 자체 디렉터리에 저장합니다. 이러한 파일 중 하나는 자체 디렉터리에 저장되는 .zshrc입니다.

다음과 같습니다.

.zlogin -> /home/jordan/.zprezto/runcoms/zlogin
.zlogout -> /home/jordan/.zprezto/runcoms/zlogout
.zpreztorc -> /home/jordan/.zprezto/runcoms/zpreztorc
.zprofile -> /home/jordan/.zprezto/runcoms/zprofile
.zshenv -> /home/jordan/.zprezto/runcoms/zshenv
.zshrc -> /home/jordan/.zprezto/runcoms/zshrc

prezto를 손상시키지 않고 내 git dotfiles 디렉토리에 있는 .zshrc 파일을 어떻게 추적할 수 있나요?

답변1

이 경우 파일 시스템 경계를 넘지 않는다면 하드 링크를 사용할 수 있습니다. 몰랐다면 하드 링크는 심볼릭 링크와 매우 비슷하지만 프로세스의 관점에서 보면 파일은 일반 파일입니다. 여기에는 이를 올바르게 처리하고 심볼릭 링크 대신 콘텐츠가 포함된 일반 파일로 보관하는 git이 포함됩니다.

그러나 git은 이러한 링크를 추적하지 않기 때문에 어떤 이유로 파일이 저장소에 의해 삭제되었다가 다시 생성되면 하드 링크가 끊어지므로 git 사용 시 이 점을 주의해야 합니다.

명확하게 말하면 Pretzo의 메인 스토리지 인스턴스에서 git 지원 포인트 파일이 저장된 디렉터리의 버전으로 하드 링크를 생성한다는 의미입니다. Pretzo는 이를 일반 파일로 처리하고 git은 이를 일반 파일로 처리합니다. 하드 링크 파일은 심볼릭 링크될 수 있으므로 이러한 방식으로 배포하는 것은 문제가 되지 않습니다.

심볼릭 링크와 마찬가지로 이는 한 버전의 변경 사항이 다른 버전으로 변경됨을 의미합니다. 기술적으로 스토리지(여러 관련 파일 노드 포함)의 동일한 데이터이기 때문입니다. 하드 링크는 명시적으로 표시되지 않는 경우가 많기 때문에 많은 도구를 사용하는 심볼릭 링크보다 알아차리기가 더 어렵습니다. (이것이 다양한 GUI 파일 브라우저에 어떻게 적용되는지는 모르겠습니다. 일반적으로 일반 파일일 뿐이라고 생각합니다.) 그러나 ls -l표시된 링크 수(두 번째 열) stat등을 기준으로 이를 발견할 수 있습니다. 하드 링크되지 않은 일반 파일의 링크 수는 1입니다(디렉토리는아니요일반 파일이므로 링크 수가 다릅니다). 불행하게도 심볼릭 링크와 달리 다른 노드를 쉽게 찾을 수 있는 방법은 없습니다., 존재를 나타내는 링크 수입니다. 따라서 이 작업을 무작정 시작하지 말고 이 경우처럼 체계적으로 수행하여 다른 노드의 이유와 위치를 알 수 있습니다.

경고하다

이는 이러한 방식으로 여러 시스템에 배포하는 경우(이 시점에서 귀하의 게시물이 명확하지 않음) 문제가 발생할 가능성이 있음을 의미합니다.프레스토 악장이러한 파일을 직접 변경하는 것은 쉽습니다. 이렇게 하면 파일이 대기 중인 업데이트를 통과하게 되지만 pull해당 업데이트는 Pretzo에서 수행한 로컬 변경 사항과 충돌하며 이 시점에서는 병합이 좋지 않을 수 있으므로 무엇을 해야 할지 결정해야 합니다(하드 링크를 삭제할 수 있음에 유의) 다른 모든 사본은 삭제되지 않습니다).

그러나 이것이 Pretzo가 읽기만 하고 수정하지 않는 구성 파일이라는 것을 알고 있다면(git이 시스템 전반에 걸쳐 파일을 추적한다는 아이디어에 다소 암시되어 있음) 괜찮습니다. 또한 이 저장소를 하나의 특정 시스템에 대한 백업으로 사용하는 경우에도 괜찮습니다. 위의 상황은 발생하지 않습니다.

유일한 다른 문제는 파일 시스템 경계를 넘어 하드 링크를 사용할 수 없다는 것입니다. 즉, 기본 git 지원 저장소가 Pretzo 자체 저장소와 별도로 마운트된 파일 시스템에 있는 경우 이 접근 방식을 사용할 수 없습니다.

답변2

Prezto는 zsh 도트 파일을 추적하는 데 도움을 주기 위해 이 작업을 수행합니다.

~/.zpreztogit 저장소이므로 기본적으로 분기를 유지 관리합니다. 이봐:https://github.com/sorin-ionescu/prezto#updating

관련 정보