2013-08-19 4 views
3

Git에서 mergetool로 SemanticMerge를 사용하고 싶지만 Merge를 수행하려고 할 때 SemanticMerge에서 해당 파일을 찾을 수 없다는 불만을 듣습니다. 파일 C:\Program Files (x86)\Git\my_repo_name\my_project\MyFile.cs.BASE.1234.cs - 이는 정확히 C:\repositories\my_repo_name\my_project\MyFile.cs이어야하며 그렇게 계속됩니다. 어떤 이유로 든 Git이 다른 모든 관점에서 저장소를 사용하고 있지만 저장소 루트 대신 앞에 붙어있는 Git 설치 경로에 $ BASE, $ LOCAL 및 $ REMOTE 파일 경로를 전달하는 것으로 결정됩니다.Windows 용 Git mergetool은 저장소 루트가 아니라 Git 설치 파일 경로를 계속 제공받습니다.

나는 이것을위한 출발점으로 their own tutorial에서 제안 된 구성을 사용하고 있으며 올바른 경로가 주어지면 도구가 제대로 작동하는 것 같습니다. 그래서 Git과 MsysGit 사이에 어딘가에 잘못된 구성이나 잘못된 정보가 있다고 생각합니다.

+0

당신이 시도 할 수 및/당신의 /의 repo/.git'하는'에/경로/환경 변수'GIT_DIR' 설정 * 후 * 병합을 반복? 쉘에서 :'GIT_DIR =/path/to/your/repo/.git && git merge xxx'. – VonC

+0

SemanticMerge에'.gitconfig' 파일을 추가해야합니다. –

+0

@Cupcake 나는 그 일을 생각했지만, 실제로는 위의 링크와 거의 같습니다. 다음 번에 갈등이 생길 때 나는이 두 가지를 모두 시도 할 것입니다. – glenatron

답변

4

SemanticMerge 구성이 문제인지는 확실치 않지만, 그렇다면이 설정을 사용해보십시오. 내 작업 기계에서 작동하지만, 이는 내 개인 기계 설정이므로 아직 업데이트되지 않았을 수 있습니다. 이러한 설정은 방법으로 윈도우 7에 msysgit위한 것입니다 :

[mergetool "sm"] 
    keepBackup = false 
    trustExitCode = false 
    cmd = 'C:/Users/<user>/AppData/Local/PlasticSCM4/semanticmerge/semanticmergetool.exe' -b=\"$BASE\" -d=\"$LOCAL\" -s=\"$REMOTE\" -r=\"$MERGED\" -l=csharp -emt=\"mergetool.exe -b=\"\"@basefile\"\" -bn=\"\"@basesymbolic\"\" -s=\"\"@sourcefile\"\" -sn=\"\"@sourcesymbolic\"\" -d=\"\"@destinationfile\"\" -dn=\"\"@destinationsymbolic\"\" -r=\"\"@output\"\" -t=\"\"@filetype\"\" -i=\"\"@comparationmethod\"\" -e=\"\"@fileencoding\"\"\" -edt=\"mergetool.exe -s=\"\"@sourcefile\"\" -sn=\"\"@sourcesymbolic\"\" -d=\"\"@destinationfile\"\" -dn=\"\"@destinationsymbolic\"\" -t=\"\"@filetype\"\" -i=\"\"@comparationmethod\"\" -e=\"\"@fileencoding\"\"\" 
+0

내 저장소의 .git \ config 폴더에 추가하면 GitExtensions가 아닌 경우 "병합"명령 줄에서 사용할 수있는 정도까지 문제가 해결 된 것으로 보입니다. – glenatron