summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-12-03 08:22:10 +0000
committerZac Medico <zmedico@gentoo.org>2008-12-03 08:22:10 +0000
commitf7b7157a4608d19d9bde97537df7d033cc5896f1 (patch)
treee1ba0453a46ed655bf9a0a7271a1e6c9e11efb9e
parent5c1fc7525927985fb97dcdb851808e48fee60614 (diff)
downloadportage-f7b7157a4608d19d9bde97537df7d033cc5896f1.tar.gz
portage-f7b7157a4608d19d9bde97537df7d033cc5896f1.tar.bz2
portage-f7b7157a4608d19d9bde97537df7d033cc5896f1.zip
It's not safe to use the git commit -a option since there might
be some modified files elsewhere in the working tree that the user doesn't want to commit. Therefore, call git update-index in order to ensure that the index is updated with the latest versions of all new and modified files in the relevant portion of the working tree. svn path=/main/trunk/; revision=12142
-rwxr-xr-xbin/repoman23
1 files changed, 23 insertions, 0 deletions
diff --git a/bin/repoman b/bin/repoman
index d773419b9..9dc6ed6c9 100755
--- a/bin/repoman
+++ b/bin/repoman
@@ -1764,6 +1764,8 @@ else:
mymanifests.add(f)
else:
myupdates.add(f)
+ if vcs == 'git':
+ myupdates.difference_update(myremoved)
myupdates = list(myupdates)
mymanifests = list(mymanifests)
myheaders = []
@@ -2058,6 +2060,27 @@ else:
portage.writemsg("!!! Disabled FEATURES='sign'\n")
signed = False
+ if vcs == 'git':
+ # It's not safe to use the git commit -a option since there might
+ # be some modified files elsewhere in the working tree that the
+ # user doesn't want to commit. Therefore, call git update-index
+ # in order to ensure that the index is updated with the latest
+ # versions of all new and modified files in the relevant portion
+ # of the working tree.
+ myfiles = mymanifests + myupdates
+ myfiles.sort()
+ update_index_cmd = ["git", "update-index"]
+ update_index_cmd.extend(f.lstrip("./") for f in myfiles)
+ if options.pretend:
+ print "(%s)" % (" ".join(update_index_cmd),)
+ else:
+ retval = spawn(update_index_cmd, env=os.environ)
+ if retval != os.EX_OK:
+ writemsg_level(("!!! Exiting on %s (shell) " + \
+ "error code: %s\n") % (vcs, retval),
+ level=logging.ERROR, noiselevel=-1)
+ sys.exit(retval)
+
if vcs == 'git' or manifest_commit_required or signed:
myfiles = mymanifests[:]