Make it possible to create a new patch file while on a patch branch.
[rsync/rsync.git] / packaging / git-status.pl
index 295018c..32cd437 100644 (file)
@@ -6,25 +6,28 @@ sub check_git_state
     my($master_branch, $fatal_unless_clean, $check_patches_dir) = @_;
 
     my($cur_branch) = check_git_status($fatal_unless_clean);
-    if ($cur_branch ne $master_branch) {
+    (my $branch = $cur_branch) =~ s{^patch/([^/]+)/[^/]+$}{$1}; # change patch/BRANCH/PATCH_NAME into BRANCH
+    if ($branch ne $master_branch) {
        print "The checkout is not on the $master_branch branch.\n";
        exit 1 if $master_branch ne 'master';
-       print "Do you want me to continue with --branch=$cur_branch? [n] ";
+       print "Do you want me to continue with --branch=$branch? [n] ";
        $_ = <STDIN>;
        exit 1 unless /^y/i;
-       $_[0] = $master_branch = $cur_branch; # Updates caller's $master_branch too.
+       $_[0] = $master_branch = $branch; # Updates caller's $master_branch too.
     }
 
     if ($check_patches_dir && -d 'patches/.git') {
-       ($cur_branch) = check_git_status($fatal_unless_clean, 'patches');
-       if ($cur_branch ne $master_branch) {
-           print "The *patches* checkout is on branch $cur_branch, not branch $master_branch.\n";
+       ($branch) = check_git_status($fatal_unless_clean, 'patches');
+       if ($branch ne $master_branch) {
+           print "The *patches* checkout is on branch $branch, not branch $master_branch.\n";
            print "Do you want to change it to branch $master_branch? [n] ";
            $_ = <STDIN>;
            exit 1 unless /^y/i;
            system "cd patches && git checkout '$master_branch'";
        }
     }
+
+    return $cur_branch;
 }
 
 sub check_git_status