簡體   English   中英

使用Python在Windows XP上捕獲git日志輸出

[英]Capturing git log output on Windows XP with Python

此代碼段可在我可以訪問的大多數Unix(Linux,Solaris,AIX)以及Windows 7 / Server 2008 R2以及我用來獲取git log輸出的更高版本上使用:

from subprocess import Popen, PIPE
import platform

cmd = ["git", "--no-pager"]
if platform.system() == "Windows":
    cmd.append("--work-tree=/path/to/working/copy")
cmd.extend(["log", "--pretty=format:\"%cd %h\"", "--date=short", "--", "/path/to/working/copy/filename/to/check"])

proc = Popen(cmd, stdout=PIPE, stderr=PIPE)
proc.wait()
f = proc.stdout
some_stuff = f.read()
f.close()

但是,在使用msysgit的Windows XP上,我沒有獲得some_stuff變量的任何值,這很奇怪,因為在Windows的命令行上運行生成的命令即可。

關於我在這里應該做什么的任何提示?

經過研究后,發現的是:

  1. 在Windows上,msysgit建議使用包裝腳本git.cmd而不是直接指定git.exe
  2. msysgit對標准化路徑文件名特別敏感,特別是驅動器號必須大寫,並且文件名的大小寫必須與GetLongPathName的輸出方式匹配。
  3. 使用正斜杠和反斜杠作為路徑分隔符似乎仍然有效。

通過測試上述內容,似乎:

  • 不再需要真正指定--work-tree選項
  • 通過將其傳遞給os.path.normpath()來“規范化”路徑名將不起作用,因為它將假定不區分大小寫並將驅動器號更改為小寫。
  • 使用短路徑名( GetShortPathName的輸出)將不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM