获取两个提交或分支之间更改的文件列表
我刚开始学Python和Git,现在想写一个脚本,能够接受两个分支或提交作为参数,然后显示这两个之间更改过的文件列表,而不是普通差异比较中那些多余的信息。
在bash脚本中,我是通过使用
git diff --name-only FIRSTBRANCH...SECONDBRANCH
来实现这个功能的,但在用gitpython写Python脚本时,这个过程并没有那么顺利。如果有人知道怎么做,那就太好了。
补充一下:这里有一些代码
user = str(sys.argv[1])
password = str(sys.argv[2])
currentBranch = str(sys.argv[3])
compBranch = str(sys.argv[4])
repo = Repo(directory)
currentCommit = repo.commit(currentBranch)
compCommit = repo.commit(compBranch)
diffed = repo.diff(currentBranch, compBranch)
使用print diff会返回所有的差异细节,而我只想要更改过的文件列表。
2 个回答
8
这里有一种在Python中实现这个功能的方法。
#Dif two branches, returns list
import git
def gitDiff(branch1, branch2):
format = '--name-only'
commits = []
g = git.Git('/path/to/git/repo')
differ = g.diff('%s..%s' % (branch1, branch2), format).split("\n")
for line in differ:
if len(line):
commits.append(line)
#for commit in commits:
# print '*%s' % (commit)
return commits
3
我找到了一个解决办法,或者说至少是朝着正确的方向走了(灵感来自一个删除了自己回答的人...谢谢你,哥们)
subprocess.check_output(['git', 'diff', '--name-only', currentBranch + '..' + compBranch])
这个方法基本上能满足我的需求,不过如果有更优雅的解决方案,我非常乐意听听!