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