X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topbloke.git;a=blobdiff_plain;f=Topbloke.pm;h=a7ecad5880702f55a0ca928a4dd84fbe5ad44e9f;hp=33aec76b46b6c734e76b1021a0a2d9fca67e319b;hb=a2bee3f9f4ecc497a19a96a2f6b1264a1f9809e7;hpb=494c30db6e5fd21d19e8dfc9a10fd37fe46529d0 diff --git a/Topbloke.pm b/Topbloke.pm index 33aec76..a7ecad5 100644 --- a/Topbloke.pm +++ b/Topbloke.pm @@ -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 = ; 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) = @_;