echangelog: Add --vcs switch to specify the vcs without
authoridl0r <idl0r@gentoo.org>
Tue, 2 Feb 2010 18:26:13 +0000 (18:26 -0000)
committeridl0r <idl0r@gentoo.org>
Tue, 2 Feb 2010 18:26:13 +0000 (18:26 -0000)
autodetection as requested per bug 302784, thanks to Martin von Gagern
<Martin.vGagern@gmx.net>. Sort the VCS during autodetection.

svn path=/trunk/gentoolkit-dev/; revision=738

ChangeLog
src/echangelog/echangelog

index b0b8c20f089e1a71434299fed87f6950f3840836..cfe5d03de5eff0917c57e75962b2c4fc7af796c1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-02-02: Christian Ruppert <idl0r@gentoo.org>
+       src/echangelog/echangelog: Add --vcs switch to specify the vcs without
+               autodetection as requested per bug 302784, thanks to Martin von Gagern
+               <Martin.vGagern@gmx.net>. Sort the VCS during autodetection.
+
 2010-01-02: Christian Ruppert <idl0r@gentoo.org>
        src/echangelog/echangelog: Improve vcs detection, might fix bug 302784 as
        well.
index 9c3818fc2411421db096bc9af7c594260a4b40a1..820614bcc4e908d9ccc242fb412ee1eb869d9b6b 100755 (executable)
@@ -23,7 +23,7 @@ $Text::Wrap::unexpand = 0;
 # Global variables
 my (@files, @ebuilds, @conflicts, @trivial, @unknown, @new_versions, %actions);
 my ($input, $editor, $entry, $user, $date, $text, $vcs);
-my ($opt_help, $opt_nostrict, $opt_version);
+my ($opt_help, $opt_nostrict, $opt_force_vcs, $opt_version);
 
 $opt_help = 0;
 $opt_nostrict = 0;
@@ -86,7 +86,11 @@ sub usage {
        Options:
            --help      err, this screen ...
            --no-strict do not abort on trivial/no changes
+           --vcs <vcs> skip vcs autodetection and use the specified vcs instead      
+                       for a list of supported version control systems see below
            --version   show version info
+
+       Supported VCS: bzr, cvs, git, hg, svn
        EOF
        print $usage;
        exit 0;
@@ -207,7 +211,8 @@ sub mypush(\@@) {
 GetOptions(
        'help' => \$opt_help,
        'no-strict' => \$opt_nostrict,
-       'version' => \$opt_version,
+       'vcs=s' => \$opt_force_vcs,
+       'version|v' => \$opt_version,
        'strict' => \$opt_strict,
 );
 
@@ -221,17 +226,22 @@ if($opt_strict) {
 
 # Figure out what kind of repo we are in.
 # Respect $PATH while looking for the VCS
-if (getenv("PATH")) {
-       foreach my $path ( split(":", getenv("PATH")) ) {
-               foreach my $_vcs (keys(%vcs)) {
-                       if ( -X "${path}/${_vcs}" ) {
-                               $vcs = $_vcs if check_vcs_dir($vcs{$_vcs}{directory});
-                               last if $vcs;
+if(! defined($opt_force_vcs)) {
+       if (getenv("PATH")) {
+               foreach my $path ( split(":", getenv("PATH")) ) {
+                       foreach my $_vcs (sort(keys(%vcs))) {
+                               if ( -X "${path}/${_vcs}" ) {
+                                       $vcs = $_vcs if check_vcs_dir($vcs{$_vcs}{directory});
+                                       last if $vcs;
+                               }
                        }
+                       last if $vcs;
                }
-               last if $vcs;
        }
 }
+else {
+       $vcs = $opt_force_vcs if defined $vcs{$opt_force_vcs};
+}
 
 if ( ! $vcs ) {
        print STDERR "Either no CVS, .git, .svn, ... directories found, the specific VCS has not been\n";