我正在编写一个应用程序来在Git和ClearCase存储库之间来回移动提交。git diff在命令行但不在Python中的问题
的Git版本是:1.8.3.msysgit.0
的代码在Python(2.7.5)编写的,我得到一个奇怪的错误。在命令行上的行为和在应用程序相同的命令的行为是不一样的:
从我的应用程序的日志,我得到这个::
[git diff --name-status -M -z --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --] exit code: 128
Command output for [git diff --name-status -M -z --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --]:
stderr >> fatal: bad revision '4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac'
但是从相同的Windows命令行,没有结果,但没有错误之一:
C:\Temp\gitcc_test>git diff --name-status -M -z --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --
C:\Temp\gitcc_test>
与此类似,如果我运行此命令行(显示的diff,不只是重命名的文件),我得到的输出:
C:\Temp\gitcc_test>git diff --ignore-submodules 6a4db18a0048db2dfe0e6639cabcdf10e265a1b6..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --
diff --git a/hello.txt b/hello.txt
index 3eecb7d..da588dd 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Bonjour!
+Hello!
C:\Temp\gitcc_test>
但这个命令不返回任何:
C:\Temp\gitcc_test>git diff --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --
C:\Temp\gitcc_test>
父提交的4dc7 ...是... 6a4d,那么为什么不4dc7 ... ^给我任何结果?
在此先感谢!
这看起来应该可以工作。我知道msysgit由于Windows有奇怪(虽然我不使用Windows,所以我不知道各种破碎的比特),所以我会尝试的第一件事是:当你给'git diff'的时候''.. B'语法的行为与'git diff AB'相同,所以用两个单独的参数替换'A..B'部分会使msysgit表现得更好。 (但这只是在黑暗中拍摄的。) – torek
@torek感谢您的建议,我曾尝试过,恐怕行为是一样的。 –