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()
1 Answer 1
if result is False:
raise Exception('diff found between the files')
else:
return 'files are identical'
Why would a difference be considered Exception
al? 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"):
-
\$\begingroup\$ Actually as this script is meant to run on a CD pipeline I might just do "assert result" or something similar instead of raising an Exception(). \$\endgroup\$Orestis– Orestis2015年02月04日 17:01:20 +00:00Commented Feb 4, 2015 at 17:01
-
1\$\begingroup\$ That isn't a best-practice use of assert, see e.g. stackoverflow.com/q/944592/3001761 \$\endgroup\$jonrsharpe– jonrsharpe2015年02月04日 17:05:11 +00:00Commented Feb 4, 2015 at 17:05
git
directly. \$\endgroup\$