我用Git命令行工具以一种可移植的方式设置了一个dropbox文件夹,在相同的dropbox文件夹结构中,我也有Beyond Compare 4,我喜欢用它来比较/合并。
然而,这个dropbox文件夹在我的电脑上的确切位置由于一些策略的不同而不同,所以我试图说服gitconfig使用我的Beyond Compare工具的相对路径。
这个是可能的吗?
这是在Windows10上,我想这可能很重要。
这是文件夹结构:
Dropbox
|
+-- Tools
|
+-- git
| |
| +-- bin
| +-- mingw64
| |
| +-- etc (folder with gitconfig in it)
+-- Beyond Compare 4
|
+-- bcomp.exe下面是我尝试添加到gitconfig文件中的内容:
[diff]
tool = bc
[difftool "bc"]
cmd = '../../../Beyond Compare 4/BComp.exe' \"$LOCAL\" \"$REMOTE\"但这是我尝试使用它时的输出:
D:\Temp> git difftool test.txt
Viewing (1/1): 'test.txt'
Launch 'bc' [Y/n]?
/mingw64/libexec/git-core/git-mergetool--lib: line 124: ../../Beyond Compare 4/BComp.exe: No such file or directory
fatal: external diff died, stopping at test.txt
D:\Temp>如果我将自己放在命令行上的etc目录中,并发出以下命令:
"..\..\..\Beyond Compare 4\bcomp.exe"然后Beyond Compare开始,所以我猜相对于gitconfig/etc的相对路径是正确的。
我尝试一次删除一个级别的../,然后重试,但每种情况都得到相同的错误,因此路径也不是相对于mingw64或git目录。
我假设该路径是相对于我的命令行当前所在的位置使用的,这将是我的存储库。
还请注意,如果我指定bcomp.exe的完整且准确的路径,它将很好地工作:
[difftool "bc"]
cmd = 'C:/Users/MY-USERNAME/Dropbox/Tools/Beyond Compare 4/BComp.exe' \"$LOCAL\" \"$REMOTE\"我还设置了一个%DROPBOX%环境变量来指向我的dropbox文件夹的根目录,所以我尝试这样做:
[difftool "bc"]
cmd = '%DROPBOX%/Tools/Beyond Compare 4/BComp.exe' \"$LOCAL\" \"$REMOTE\"给了我一个不同的错误消息,我认为这意味着环境变量在gitconfig中是非法的,或者可能使用了不同的语法:
/mingw64/libexec/git-core/git-mergetool--lib: line 124: fg: no job control如果我尝试使用$DROPBOX而不是%DROPBOX%,我将返回到前面的错误消息:
/mingw64/libexec/git-core/git-mergetool--lib: line 124: $DROPBOX/Tools/Beyond Compare 4/BComp.exe: No such file or directory
fatal: external diff died, stopping at a.txt那么有没有可能说服git使用相对路径来找到diff工具呢?如果是这样,相对于什么?
发布于 2020-02-10 20:54:05
Git不会尝试搜索/替换工具路径中的环境变量。因此,我恐怕这是不可能的。使用相对路径也不起作用,因此您应该真正使用以下方法之一。
假设这是您的设置:
应用程序配置PC1: C:/Users/MY-USERNAME/Dropbox/Tools/Beyond Compare
可能的选项包括:
.git/config)之外,您还可以使用绝对路径设置每个用户的配置(PC1上的C:/Users/MY-USERNAME/.gitconfig)。这将具有为所有存储库设置首选项的优点,采用DRY principle.cmd = 'BComp.exe' \"$LOCAL\" \"$REMOTE\",并修改path环境变量以保存BComp.exe的路径(在PC1上为C:/Users/MY-USERNAME/Dropbox/Tools/Beyond Compare 4/,在PC2上为D:/Applications/Dropbox/Tools/Beyond Compare 4/ )。在使用Windows10的C:/Apps/BComp.exe进行硬编码。方法2和3是为了完整性,或者说是开箱即用的解决方案。但实际上,你应该考虑第一个。
https://stackoverflow.com/questions/42345352
复制相似问题