BIND 10 trac1541, updated. f59f3629b17d25cf0f8920582af2e5e1ca5283c1 [1541] git-obsolete-branch.py script improved:
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Jan 11 16:13:55 UTC 2012
The branch, trac1541 has been updated
via f59f3629b17d25cf0f8920582af2e5e1ca5283c1 (commit)
from 2e14ad5917f64c67866f5b49a87515c5c6479ef3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f59f3629b17d25cf0f8920582af2e5e1ca5283c1
Author: Tomek Mrugalski <tomasz at isc.org>
Date: Wed Jan 11 17:13:15 2012 +0100
[1541] git-obsolete-branch.py script improved:
- added command-line switches
- csv and human readable output are now better formed
- added copyright
-----------------------------------------------------------------------
Summary of changes:
tools/git-obsolete-branch.py | 84 +++++++++++++++++++++++++++++++++++++----
1 files changed, 75 insertions(+), 9 deletions(-)
-----------------------------------------------------------------------
diff --git a/tools/git-obsolete-branch.py b/tools/git-obsolete-branch.py
index e3c6349..5abd480 100755
--- a/tools/git-obsolete-branch.py
+++ b/tools/git-obsolete-branch.py
@@ -1,17 +1,33 @@
#!/usr/bin/python
+#
+# Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+#
# This script lists obsolete (fully merged) branches. It is useful for periodic maintenance
# of our GIT tree.
#
# This script requires python 2.7 or 3.
#
# I have limited experience in Python. If things are done in a strange or uncommon way, there
-# are no obscure reasons to do it that way, just plain lack of experience. :)
+# are no obscure reasons to do it that way, just plain lack of experience.
#
# tomek
import string
import subprocess
+import sys
class Branch:
MERGED=1
@@ -21,7 +37,7 @@ class Branch:
last_commit = ""
-def branch_list_get():
+def branch_list_get(verbose):
txt_list = subprocess.check_output(["git", "branch", "-r"])
txt_list = txt_list.split(b"\n")
@@ -42,7 +58,9 @@ def branch_list_get():
branch_info.name = branch_info.name.decode("utf-8")
# check if branch is merged or not
- print ("Checking branch %s" % branch_info.name)
+ if verbose:
+ print("Checking branch %s" % branch_info.name)
+
cmd = ["git", "diff", "master..." + branch_info.name ]
diff = subprocess.check_output(cmd)
if (len(diff) == 0):
@@ -66,40 +84,88 @@ def branch_list_get():
# return (out)
return (out)
-def branch_print(branches, print_merged, print_notmerged, print_stats):
+def branch_print(branches, csv, print_merged, print_notmerged, print_stats):
merged = 0
notmerged = 0
+ merged_str = ""
+ notmerged_str = ""
for branch in branches:
if (branch.status==Branch.MERGED):
merged = merged + 1
if (not print_merged):
continue
- print("%s,merged,%s" % (branch.name, branch.last_commit) )
+ if (csv):
+ print("%s,merged,%s" % (branch.name, branch.last_commit) )
+ else:
+ merged_str = merged_str + " " + branch.name
else:
# NOT MERGED
notmerged = notmerged + 1
if (not print_notmerged):
continue
- print("%s,notmerged,%s" % (branch.name, branch.last_commit) )
+ if (csv):
+ print("%s,notmerged,%s" % (branch.name, branch.last_commit) )
+ else:
+ notmerged_str = notmerged_str + " " + branch.name
+
+ if (not csv):
+ if (print_merged):
+ print("Merged branches : %s" % (merged_str))
+ if (print_notmerged):
+ print("NOT merged branches: %s" % (notmerged_str))
if (print_stats):
print("#----------");
print("#Merged : %d" % merged)
print("#Not merged: %d" % notmerged)
+def show_help():
+ print("This script prints out merged and/or unmerged branches of a GIT tree.")
+ print("Supported command-line options:")
+ print("")
+ print("--csv produce CSV (coma separated value) output")
+ print("--unmerged lists umerged branches")
+ print("--skip-merged do not print merged branches (that are listed by default)")
+ print("--stats prints out statistics")
+ print("--help prints out this help")
+
def main():
usage = """%prog
Lists all obsolete (fully merged into master) branches.
"""
- print("branch name,status,date,last commit(mail),last commit(name)")
+ csv = False;
+ merged = True;
+ unmerged = False;
+ stats = False;
+
+ for x in sys.argv[1:]:
+ if x == "--csv":
+ csv = True;
+ elif x == "--unmerged":
+ unmerged = True;
+ elif x == "--skip-merged":
+ merged = False;
+ elif x == "--stats":
+ stats = True;
+ elif x == "--help":
+ show_help()
+ return
+ else:
+ print("Invalid parameter: %s" % x)
+ print("")
+ show_help()
+ return
+
+ if csv:
+ print("branch name,status,date,last commit(mail),last commit(name)")
- branch_list = branch_list_get()
+ branch_list = branch_list_get(not csv)
# Uncomment this to print out also merged branches
# branch_print(branch_list, False, True, False)
- branch_print(branch_list, True, False, True)
+ branch_print(branch_list, csv, merged, unmerged, stats)
if __name__ == '__main__':
main()
More information about the bind10-changes
mailing list