version 1.1.1.1, 2012/02/17 15:09:30
|
version 1.1.1.3, 2016/11/01 09:54:32
|
Line 6 sub check_git_state
|
Line 6 sub check_git_state
|
my($master_branch, $fatal_unless_clean, $check_patches_dir) = @_; |
my($master_branch, $fatal_unless_clean, $check_patches_dir) = @_; |
|
|
my($cur_branch) = check_git_status($fatal_unless_clean); |
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"; |
print "The checkout is not on the $master_branch branch.\n"; |
exit 1 if $master_branch ne 'master'; |
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>; |
$_ = <STDIN>; |
exit 1 unless /^y/i; |
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') { |
if ($check_patches_dir && -d 'patches/.git') { |
($cur_branch) = check_git_status($fatal_unless_clean, 'patches'); | ($branch) = check_git_status($fatal_unless_clean, 'patches'); |
if ($cur_branch ne $master_branch) { | if ($branch ne $master_branch) { |
print "The *patches* checkout is on branch $cur_branch, not branch $master_branch.\n"; | 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] "; |
print "Do you want to change it to branch $master_branch? [n] "; |
$_ = <STDIN>; |
$_ = <STDIN>; |
exit 1 unless /^y/i; |
exit 1 unless /^y/i; |
system "cd patches && git checkout '$master_branch'"; |
system "cd patches && git checkout '$master_branch'"; |
} |
} |
} |
} |
|
|
|
return $cur_branch; |
} |
} |
|
|
sub check_git_status |
sub check_git_status |
Line 32 sub check_git_status
|
Line 35 sub check_git_status
|
my($fatal_unless_clean, $subdir) = @_; |
my($fatal_unless_clean, $subdir) = @_; |
$subdir = '.' unless defined $subdir; |
$subdir = '.' unless defined $subdir; |
my $status = `cd '$subdir' && git status`; |
my $status = `cd '$subdir' && git status`; |
my $is_clean = $status =~ /\nnothing to commit \(working directory clean\)/; | my $is_clean = $status =~ /\nnothing to commit.+working directory clean/; |
my($cur_branch) = $status =~ /^# On branch (.+)\n/; | my($cur_branch) = $status =~ /^(?:# )?On branch (.+)\n/; |
if ($fatal_unless_clean && !$is_clean) { |
if ($fatal_unless_clean && !$is_clean) { |
if ($subdir eq '.') { |
if ($subdir eq '.') { |
$subdir = ''; |
$subdir = ''; |