git이 심볼릭 링크를 파일로 처리하도록 만드는 방법은 무엇입니까?

git이 심볼릭 링크를 파일로 처리하도록 만드는 방법은 무엇입니까?

매우 구체적인 사용 사례가 있습니다. 파일을 체크인할 때 우리가 사용하는 DesignSync 버전 제어 시스템은 해당 파일을 원격 저장소에 대한 심볼릭 링크로 대체합니다.

체크인하기 전에 변경 사항을 버전 관리하기 위해 로컬에서 git을 사용하고 있으므로 "파일을 심볼릭 링크로 교체" 또는 그 반대의 경우 파일/symlink의 내용이 동일한 한 파일 변경으로 간주됩니다.

이것을 달성할 수 있는 방법이 있나요?

답변1

여기서는 심볼릭 링크 접근 방식을 제거하는 것 외에는 "아름다운" 방법이 없다고 생각합니다. (이것이 DesignSync의 기능인지는 모르겠습니다. Dassault가 그 방식으로 오류를 확인하기를 바랄 수도 있습니다.) 접근 방식이 상충되는 두 가지 다른 코드 버전 제어 도구를 사용하면 두 도구를 완벽하게 조정하는 것이 논리적으로 불가능해 보였습니다.

필요실제 파일에는 git을 사용하십시오. 그렇지 않으면 항목을 변경할 때 변경 사항이 표시되지 않습니다. 너필요DesignSyncs 심볼릭 링크를 존중하세요.

나는 세 가지 방법을 보았지만 첫 번째 방법을 시도했고 배제할 수 있습니다.

  • .gitattributes를 사용하면 커밋 및 체크아웃의 심볼릭 링크를 심볼릭 링크된 파일로 대체하거나 그 반대로 바꾸는 "taint" 및 "clean" 필터를 가질 수 있습니다. .gitattributes에서 심볼릭 링크가 특별하게 처리되지 않기 때문에 작동하지 않습니다.
  • 모든 심볼릭 링크를 DesignSync가 관리하는 "업스트림"에서 복사한 원본 파일로 바꾸는 사전 커밋 스크립트를 작성할 수 있습니다.
  • DesignSync 저장소의 두 번째 "보기"를 제공하는 FUSE 파일 시스템을 작성할 수 있습니다. 여기서 심볼릭 링크는 심볼릭 링크된 실제 파일로 대체됩니다. .git 저장소 디렉터리에 마운트를 바인딩하고 그런 방식으로 git에서 파일을 관리할 수 있습니다.

두 방법 모두 고통스럽지 않습니다. 솔직히 선택해야지하나일회용 소스 제어 시스템은 나를 불안하게 만듭니다.

솔직히, 가장 쉬운 방법은 아마도 특별한 작업을 하지 않는 것입니다. 로컬 git 저장소를 변경하지 않고 그대로 두고 변경된 파일을 DesignSync에 확인하고 싶을 때마다 별도의 체크아웃을 수행하는 것입니다. Git은 어디서나 저장소를 확인할 수 있습니다! DesignSync의 변경 사항을 Git 저장소로 가져와야 할 때마다 cp -L새로운 DesignSync를 Git 저장소로 확인하라고 솔직히 말할 것입니다(symlink를 "따라").

관련 정보