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>