chiark / gitweb /
new THEORY, define inpatch
[topbloke.git] / Topbloke.pm
index 33aec76..a7ecad5 100644 (file)
@@ -17,7 +17,7 @@ BEGIN {
 
     $VERSION     = 1.00;
     @ISA         = qw(Exporter);
-    @EXPORT      = qw(debug
+    @EXPORT      = qw(debug $tiprefs $baserefs
                      run_git run_git_1line run_git_check_nooutput
                      run_git_test_anyoutput git_get_object
                      git_config git_dir chdir_toplevel enable_reflog
@@ -179,6 +179,13 @@ sub check_no_unwanted_metadata ($) {
                           qw(.topbloke));
 }
 
+sub check_clean_tree ($) {
+    run_git_check_nooutput("operation requires working tree to be clean",
+                          qw(diff --name-only HEAD --));
+    run_git_check_nooutput("operation cannot proceed with staged changes",
+                          qw(diff --cached --name-only HEAD --));
+}
+
 #----- configuring a tree -----
 
 sub setup_config () {
@@ -235,6 +242,9 @@ sub setup_config () {
 
 #----- branch and patch specs and parsed patch names -----
 
+our $tiprefs = 'refs/topbloke-tips';
+our $baserefs = 'refs/topbloke-bases';
+
 sub current_branch () {
     open R, git_dir().'/HEAD' or die "open HEAD $!";
     my $ref = <R>;  defined $ref or die $!;
@@ -293,6 +303,7 @@ sub parse_patch_name ($) {
 sub parse_patch_spec ($) {
     my ($orig) = @_;
     local $_ = $orig;
+    die 'FORMAT has new spec syntax nyi';
     my $spec = { }; # Email Domain DatePrefix DateNear Nick
     my $set = sub {
        my ($key,$val,$whats) = @_;