HiveBrain v1.2.0
Get Started
← Back to all entries
patternpythongitMinor

Python script that does a git diff

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
scriptthatgitpythondoesdiff

Problem

I have created a small script that aims on comparing two versions of a file by doing a git diff. Is there a better way to code it?

import subprocess

def diff_versions(file_to_be_compared, directory):
    try:
        out = subprocess.check_output(["git", "diff", "origin/master^", "origin/master", file_to_be_compared],
            cwd = directory)
    except subprocess.CalledProcessError as ex:
        return ex.output

    return out is None

def main():
    result = diff_versions('file.txt', "some/directory")
    if result is False:
        raise Exception('diff found between the files')
    else:
        return 'files are identical'

if __name__ == "__main__":
    main()

Solution

if result is False:
    raise Exception('diff found between the files')
else:
    return 'files are identical'


Why would a difference be considered Exceptional? Given that nothing else happens in the program, there isn't much difference at this point between raising an error and just printing the message, but it seems like an odd way to do things.

Also, you shouldn't test for False by identity, if not result is the usual method.

Have you considered allowing the user to select branches to compare? You could use the current value as a default, e.g.

def diff_versions(file_to_be_compared, directory, branch="origin/master"):

Code Snippets

if result is False:
    raise Exception('diff found between the files')
else:
    return 'files are identical'
def diff_versions(file_to_be_compared, directory, branch="origin/master"):

Context

StackExchange Code Review Q#79596, answer score: 4

Revisions (0)

No revisions yet.