diff options
-rwxr-xr-x | bin/repoman | 23 |
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[:] |