repoman: support --echangelog=force
authorZac Medico <zmedico@gentoo.org>
Mon, 17 Oct 2011 04:22:18 +0000 (21:22 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 17 Oct 2011 04:22:18 +0000 (21:22 -0700)
Allows forced ChangeLog generation even when the vcs has detected that
the ChangeLog has already been modified.

bin/repoman
man/repoman.1

index ba810c66c56e9a15f8c5e30ea7b60724805ecb8a..ad1e68830465c892d73f4a97542540e76ec4f78a 100755 (executable)
@@ -195,8 +195,9 @@ def ParseArgs(argv, qahelp):
                help='do not print unnecessary messages')
 
        parser.add_option(
-               '--echangelog', type='choice', choices=('y', 'n'), metavar="<y|n>",
-               help='for commit mode, call echangelog if ChangeLog is unmodified')
+               '--echangelog', type='choice', choices=('y', 'n', 'force'), metavar="<y|n|force>",
+               help='for commit mode, call echangelog if ChangeLog is unmodified (or '
+               'regardless of modification if \'force\' is specified)')
 
        parser.add_option('-f', '--force', dest='force', default=False, action='store_true',
                help='Commit with QA violations')
@@ -654,7 +655,7 @@ if vcs is None:
 # This is needed because they try to avoid merge collisions.
 # Gentoo's Council decided to always use the ChangeLog file.
 # TODO: shouldn't this just be switched on the repo, iso the VCS?
-check_changelog = options.echangelog != 'y' and vcs in ('cvs', 'svn')
+check_changelog = options.echangelog not in ('y', 'force') and vcs in ('cvs', 'svn')
 
 # Generate an appropriate PORTDIR_OVERLAY value for passing into the
 # profile-specific config constructor calls.
@@ -2419,7 +2420,7 @@ else:
                print("* aborting commit.")
                sys.exit(1)
 
-       if options.echangelog == 'y':
+       if options.echangelog in ('y', 'force'):
                logging.info("checking for unmodified ChangeLog files")
                for x in sorted(vcs_files_to_cps(
                        chain(myupdates, mymanifests, myremoved))):
@@ -2434,7 +2435,7 @@ else:
 
                        changelog_path = os.path.join(checkdir_relative, "ChangeLog")
                        changelog_modified = changelog_path in modified_changelogs
-                       if changelog_modified:
+                       if changelog_modified and options.echangelog != 'force':
                                continue
 
                        # get changes for this package
index 4d22e8d1cea131afcef351a267c542cc23de9048..2e4c86cf4306af77a9a108c170e199004aa61a9f 100644 (file)
@@ -41,8 +41,9 @@ Forces the metadata.xml parse check to be carried out
 \fB-v\fR, \fB--verbose\fR
 Displays every package name while checking
 .TP
-\fB\-\-echangelog=<y|n>\fR
-For commit mode, call echangelog if ChangeLog is unmodified
+\fB\-\-echangelog=<y|n|force>\fR
+For commit mode, call echangelog if ChangeLog is unmodified (or
+regardless of modification if 'force' is specified)
 .TP
 \fB\-\-if\-modified=<y|n>\fR
 Only check packages that have uncommitted modifications