summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--project.py12
-rw-r--r--subcmds/abandon.py27
2 files changed, 27 insertions, 12 deletions
diff --git a/project.py b/project.py
index 9d98041f..7ba1b38a 100644
--- a/project.py
+++ b/project.py
@@ -1204,13 +1204,19 @@ class Project(object):
1204 1204
1205 def AbandonBranch(self, name): 1205 def AbandonBranch(self, name):
1206 """Destroy a local topic branch. 1206 """Destroy a local topic branch.
1207
1208 Args:
1209 name: The name of the branch to abandon.
1210
1211 Returns:
1212 True if the abandon succeeded; False if it didn't; None if the branch
1213 didn't exist.
1207 """ 1214 """
1208 rev = R_HEADS + name 1215 rev = R_HEADS + name
1209 all = self.bare_ref.all 1216 all = self.bare_ref.all
1210 if rev not in all: 1217 if rev not in all:
1211 # Doesn't exist; assume already abandoned. 1218 # Doesn't exist
1212 # 1219 return None
1213 return True
1214 1220
1215 head = self.work_git.GetHead() 1221 head = self.work_git.GetHead()
1216 if head == rev: 1222 if head == rev:
diff --git a/subcmds/abandon.py b/subcmds/abandon.py
index 8af61327..42abb2ff 100644
--- a/subcmds/abandon.py
+++ b/subcmds/abandon.py
@@ -41,21 +41,30 @@ It is equivalent to "git branch -D <branchname>".
41 41
42 nb = args[0] 42 nb = args[0]
43 err = [] 43 err = []
44 success = []
44 all = self.GetProjects(args[1:]) 45 all = self.GetProjects(args[1:])
45 46
46 pm = Progress('Abandon %s' % nb, len(all)) 47 pm = Progress('Abandon %s' % nb, len(all))
47 for project in all: 48 for project in all:
48 pm.update() 49 pm.update()
49 if not project.AbandonBranch(nb): 50
50 err.append(project) 51 status = project.AbandonBranch(nb)
52 if status is not None:
53 if status:
54 success.append(project)
55 else:
56 err.append(project)
51 pm.end() 57 pm.end()
52 58
53 if err: 59 if err:
54 if len(err) == len(all): 60 for p in err:
55 print >>sys.stderr, 'error: no project has branch %s' % nb 61 print >>sys.stderr,\
56 else: 62 "error: %s/: cannot abandon %s" \
57 for p in err: 63 % (p.relpath, nb)
58 print >>sys.stderr,\ 64 sys.exit(1)
59 "error: %s/: cannot abandon %s" \ 65 elif not success:
60 % (p.relpath, nb) 66 print >>sys.stderr, 'error: no project has branch %s' % nb
61 sys.exit(1) 67 sys.exit(1)
68 else:
69 print >>sys.stderr, 'Abandoned in %d project(s):\n %s' % (
70 len(success), '\n '.join(p.relpath for p in success))