获取两个提交或分支之间已更改文件的列表

时间:2014-08-28 19:37:14

标签: python git bash shell gitpython

我是Python / Git newb但是我试图编写一个脚本,它接受两个分支或提交作为参数,并显示两者之间已更改文件的列表,而不是所有无关的信息常规的差异。

这是通过使用

在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 个答案:

答案 0 :(得分:4)

这是在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

答案 1 :(得分:2)

修正或至少在正确的轨道上使用以下内容(受到删除答案的人的启发...谢谢,伙计)

subprocess.check_output(['git', 'diff', '--name-only', currentBranch + '..' + compBranch])

这基本上可以满足我的需要,但如果有一个更优雅的解决方案,我很乐意听到它!