Annotation of embedaddon/rsync/packaging/git-status.pl, revision 1.1.1.3
1.1 misho 1: # Do some git-status checking for the current dir and (optionally)
2: # the patches dir.
3:
4: sub check_git_state
5: {
6: my($master_branch, $fatal_unless_clean, $check_patches_dir) = @_;
7:
8: my($cur_branch) = check_git_status($fatal_unless_clean);
1.1.1.2 misho 9: (my $branch = $cur_branch) =~ s{^patch/([^/]+)/[^/]+$}{$1}; # change patch/BRANCH/PATCH_NAME into BRANCH
10: if ($branch ne $master_branch) {
1.1 misho 11: print "The checkout is not on the $master_branch branch.\n";
12: exit 1 if $master_branch ne 'master';
1.1.1.2 misho 13: print "Do you want me to continue with --branch=$branch? [n] ";
1.1 misho 14: $_ = <STDIN>;
15: exit 1 unless /^y/i;
1.1.1.2 misho 16: $_[0] = $master_branch = $branch; # Updates caller's $master_branch too.
1.1 misho 17: }
18:
19: if ($check_patches_dir && -d 'patches/.git') {
1.1.1.2 misho 20: ($branch) = check_git_status($fatal_unless_clean, 'patches');
21: if ($branch ne $master_branch) {
22: print "The *patches* checkout is on branch $branch, not branch $master_branch.\n";
1.1 misho 23: print "Do you want to change it to branch $master_branch? [n] ";
24: $_ = <STDIN>;
25: exit 1 unless /^y/i;
26: system "cd patches && git checkout '$master_branch'";
27: }
28: }
1.1.1.2 misho 29:
30: return $cur_branch;
1.1 misho 31: }
32:
33: sub check_git_status
34: {
35: my($fatal_unless_clean, $subdir) = @_;
36: $subdir = '.' unless defined $subdir;
37: my $status = `cd '$subdir' && git status`;
1.1.1.3 ! misho 38: my $is_clean = $status =~ /\nnothing to commit.+working directory clean/;
! 39: my($cur_branch) = $status =~ /^(?:# )?On branch (.+)\n/;
1.1 misho 40: if ($fatal_unless_clean && !$is_clean) {
41: if ($subdir eq '.') {
42: $subdir = '';
43: } else {
44: $subdir = " *$subdir*";
45: }
46: die "The$subdir checkout is not clean:\n", $status;
47: }
48: ($cur_branch, $is_clean, $status);
49: }
50:
51: 1;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>