Fixed repo abandon to give better messages.
The main fix is to give an error message if nothing was actually
abandoned. See <http://crosbug.com/6041>.
The secondary fix is to list projects where the abandon happened.
This could be done in a separate CL or dropped altogether if requested.
TEST=manual
$ repo abandon dougabc; echo $?
Abandon dougabc: 100% (127/127), done.
Abandoned in 2 project(s):
chromite
src/platform/init
0
$ repo abandon dougabc; echo $?
Abandon dougabc: 100% (127/127), done.
error: no project has branch dougabc
1
$ repo abandon dougabc; echo $?
Abandon dougabc: 100% (127/127), done.
error: chromite/: cannot abandon dougabc
1
Change-Id: I79520cc3279291acadc1a24ca34a761e9de04ed4
diff --git a/subcmds/abandon.py b/subcmds/abandon.py
index 8af6132..42abb2f 100644
--- a/subcmds/abandon.py
+++ b/subcmds/abandon.py
@@ -41,21 +41,30 @@
nb = args[0]
err = []
+ success = []
all = self.GetProjects(args[1:])
pm = Progress('Abandon %s' % nb, len(all))
for project in all:
pm.update()
- if not project.AbandonBranch(nb):
- err.append(project)
+
+ status = project.AbandonBranch(nb)
+ if status is not None:
+ if status:
+ success.append(project)
+ else:
+ err.append(project)
pm.end()
if err:
- if len(err) == len(all):
- print >>sys.stderr, 'error: no project has branch %s' % nb
- else:
- for p in err:
- print >>sys.stderr,\
- "error: %s/: cannot abandon %s" \
- % (p.relpath, nb)
+ for p in err:
+ print >>sys.stderr,\
+ "error: %s/: cannot abandon %s" \
+ % (p.relpath, nb)
+ sys.exit(1)
+ elif not success:
+ print >>sys.stderr, 'error: no project has branch %s' % nb
sys.exit(1)
+ else:
+ print >>sys.stderr, 'Abandoned in %d project(s):\n %s' % (
+ len(success), '\n '.join(p.relpath for p in success))