X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit;h=9d8f9d428e4f6752fe247ecc2133f91b0b47e9b0;hp=6fd8f7d768fc7058e4db69f5000f33e7f4b01dee;hb=ece82c50afff320eaf1cd09ba540e10f24984b60;hpb=481f40a9a020a73683acde466b73e6d8a269ae8d diff --git a/dgit b/dgit index 6fd8f7d7..9d8f9d42 100755 --- a/dgit +++ b/dgit @@ -976,6 +976,12 @@ sub prep_ud () { mkdir $ud or die $!; } +sub mktree_in_ud_here () { + runcmd qw(git init -q); + rmtree('.git/objects'); + symlink '../../../../objects','.git/objects' or die $!; +} + sub mktree_in_ud_from_only_subdir () { # changes into the subdir my (@dirs) = <*/.>; @@ -984,10 +990,7 @@ sub mktree_in_ud_from_only_subdir () { my $dir = $1; changedir $dir; fail "source package contains .git directory" if stat_exists '.git'; - die $! unless $!==&ENOENT; - runcmd qw(git init -q); - rmtree('.git/objects'); - symlink '../../../../objects','.git/objects' or die $!; + mktree_in_ud_here(); runcmd @git, qw(add -Af); my $tree = cmdoutput @git, qw(write-tree); $tree =~ m/^\w+$/ or die "$tree ?"; @@ -1025,9 +1028,12 @@ sub dsc_files () { map { $_->{Filename} } dsc_files_info(); } -sub is_orig_file ($) { - local ($_) = @_; - m/\.orig(?:-\w+)?\.tar\.\w+$/; +sub is_orig_file ($;$) { + local ($_) = $_[0]; + my $base = $_[1]; + m/\.orig(?:-\w+)?\.tar\.\w+$/ or return 0; + defined $base or return 1; + return $` eq $base; } sub make_commit ($) { @@ -1360,6 +1366,12 @@ sub check_not_dirty () { } } +sub commit_admin ($) { + my ($m) = @_; + progress "$m"; + runcmd_ordryrun_local @git, qw(commit -m), $m; +} + sub commit_quilty_patch () { my $output = cmdoutput @git, qw(status --porcelain); my %adds; @@ -1374,9 +1386,7 @@ sub commit_quilty_patch () { return; } runcmd_ordryrun_local @git, qw(add), sort keys %adds; - my $m = "Commit Debian 3.0 (quilt) metadata"; - progress "$m"; - runcmd_ordryrun_local @git, qw(commit -m), $m; + commit_admin "Commit Debian 3.0 (quilt) metadata"; } sub madformat ($) {