chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
changelog: mention dgit-*(7) change
[dgit.git]
/
dgit
diff --git
a/dgit
b/dgit
index d772a9037c7b9aab429ccc0e2df9ad39f4754bf8..33e32395a3efb548618a0ea45da6d6e5cf68fcdb 100755
(executable)
--- a/
dgit
+++ b/
dgit
@@
-19,7
+19,7
@@
use strict;
use strict;
-use Debian::Dgit;
+use Debian::Dgit
qw(:DEFAULT :playground)
;
setup_sigwarn();
use IO::Handle;
setup_sigwarn();
use IO::Handle;
@@
-100,6
+100,8
@@
our $git_authline_re = '^([^<>]+) \<(\S+)\> (\d+ [-+]\d+)$';
our $splitbraincache = 'dgit-intern/quilt-cache';
our $rewritemap = 'dgit-rewrite/map';
our $splitbraincache = 'dgit-intern/quilt-cache';
our $rewritemap = 'dgit-rewrite/map';
+our @dpkg_source_ignores = qw(-i(?:^|/)\.git(?:/|$) -I.git);
+
our (@git) = qw(git);
our (@dget) = qw(dget);
our (@curl) = (qw(curl --proto-redir), '-all,http,https', qw(-L));
our (@git) = qw(git);
our (@dget) = qw(dget);
our (@curl) = (qw(curl --proto-redir), '-all,http,https', qw(-L));
@@
-111,8
+113,8
@@
our (@ssh) = 'ssh';
our (@dgit) = qw(dgit);
our (@aptget) = qw(apt-get);
our (@aptcache) = qw(apt-cache);
our (@dgit) = qw(dgit);
our (@aptget) = qw(apt-get);
our (@aptcache) = qw(apt-cache);
-our (@dpkgbuildpackage) =
qw(dpkg-buildpackage -i\.git/ -I.git
);
-our (@dpkgsource) =
qw(dpkg-source -i\.git/ -I.git
);
+our (@dpkgbuildpackage) =
(qw(dpkg-buildpackage), @dpkg_source_ignores
);
+our (@dpkgsource) =
(qw(dpkg-source), @dpkg_source_ignores
);
our (@dpkggenchanges) = qw(dpkg-genchanges);
our (@mergechanges) = qw(mergechanges -f);
our (@gbp_build) = ('');
our (@dpkggenchanges) = qw(dpkg-genchanges);
our (@mergechanges) = qw(mergechanges -f);
our (@gbp_build) = ('');
@@
-277,6
+279,10
@@
sub gbp_pq {
return opts_opt_multi_cmd @gbp_pq;
}
return opts_opt_multi_cmd @gbp_pq;
}
+sub dgit_privdir () {
+ our $dgit_privdir_made //= ensure_a_playground 'dgit';
+}
+
#---------- remote protocol support, common ----------
# remote push initiator/responder protocol:
#---------- remote protocol support, common ----------
# remote push initiator/responder protocol:
@@
-557,7
+563,7
@@
sub nextarg {
}
sub pre_help () {
}
sub pre_help () {
- no
_local_git_cfg
();
+ no
t_necessarily_a_tree
();
}
sub cmd_help () {
print $helpmsg or die $!;
}
sub cmd_help () {
print $helpmsg or die $!;
@@
-635,6
+641,7
@@
our %defcfg = ('dgit.default.distro' => 'debian',
our %gitcfgs;
our @gitcfgsources = qw(cmdline local global system);
our %gitcfgs;
our @gitcfgsources = qw(cmdline local global system);
+our $invoked_in_git_tree = 1;
sub git_slurp_config () {
# This algoritm is a bit subtle, but this is needed so that for
sub git_slurp_config () {
# This algoritm is a bit subtle, but this is needed so that for
@@
-681,9
+688,10
@@
sub cfg {
"$us: distro or suite appears not to be (properly) supported";
}
"$us: distro or suite appears not to be (properly) supported";
}
-sub no
_local_git_cfg
() {
+sub no
t_necessarily_a_tree
() {
# needs to be called from pre_*
@gitcfgsources = grep { $_ ne 'local' } @gitcfgsources;
# needs to be called from pre_*
@gitcfgsources = grep { $_ ne 'local' } @gitcfgsources;
+ $invoked_in_git_tree = 0;
}
sub access_basedistro__noalias () {
}
sub access_basedistro__noalias () {
@@
-978,19
+986,13
@@
sub commit_getclogp ($) {
our %commit_getclogp_memo;
my $memo = $commit_getclogp_memo{$objid};
return $memo if $memo;
our %commit_getclogp_memo;
my $memo = $commit_getclogp_memo{$objid};
return $memo if $memo;
- mkpath '.git/dgit';
- my $mclog =
".git/dgit/clog-$objid
";
+
+ my $mclog =
dgit_privdir()."clog
";
runcmd shell_cmd "exec >$mclog", @git, qw(cat-file blob),
"$objid:debian/changelog";
$commit_getclogp_memo{$objid} = parsechangelog("-l$mclog");
}
runcmd shell_cmd "exec >$mclog", @git, qw(cat-file blob),
"$objid:debian/changelog";
$commit_getclogp_memo{$objid} = parsechangelog("-l$mclog");
}
-sub must_getcwd () {
- my $d = getcwd();
- defined $d or fail "getcwd failed: $!";
- return $d;
-}
-
sub parse_dscdata () {
my $dscfh = new IO::File \$dscdata, '<' or die $!;
printdebug Dumper($dscdata) if $debuglevel>1;
sub parse_dscdata () {
my $dscfh = new IO::File \$dscdata, '<' or die $!;
printdebug Dumper($dscdata) if $debuglevel>1;
@@
-1674,18
+1676,14
@@
sub create_remote_git_repo () {
our ($dsc_hash,$lastpush_mergeinput);
our ($dsc_distro, $dsc_hint_tag, $dsc_hint_url);
our ($dsc_hash,$lastpush_mergeinput);
our ($dsc_distro, $dsc_hint_tag, $dsc_hint_url);
-our $ud = '.git/dgit/unpack';
-sub prep_ud (;$) {
- my ($d) = @_;
- $d //= $ud;
- rmtree($d);
- mkpath '.git/dgit';
- mkdir $d or die $!;
+sub prep_ud () {
+ dgit_privdir(); # ensures that $dgit_privdir_made is based on $maindir
+ fresh_playground 'dgit/unpack';
}
sub mktree_in_ud_here () {
}
sub mktree_in_ud_here () {
-
workarea
_setup $gitcfgs{local};
+
playtree
_setup $gitcfgs{local};
}
sub git_write_tree () {
}
sub git_write_tree () {
@@
-1718,8
+1716,8
@@
sub remove_stray_gits ($) {
sub mktree_in_ud_from_only_subdir ($;$) {
my ($what,$raw) = @_;
sub mktree_in_ud_from_only_subdir ($;$) {
my ($what,$raw) = @_;
-
# changes into the subdir
# changes into the subdir
+
my (@dirs) = <*/.>;
die "expected one subdir but found @dirs ?" unless @dirs==1;
$dirs[0] =~ m#^([^/]+)/\.$# or die;
my (@dirs) = <*/.>;
die "expected one subdir but found @dirs ?" unless @dirs==1;
$dirs[0] =~ m#^([^/]+)/\.$# or die;
@@
-2060,13
+2058,13
@@
sub generate_commits_from_dsc () {
# See big comment in fetch_from_archive, below.
# See also README.dsc-import.
prep_ud();
# See big comment in fetch_from_archive, below.
# See also README.dsc-import.
prep_ud();
- changedir $
u
d;
+ changedir $
playgroun
d;
my @dfi = dsc_files_info();
foreach my $fi (@dfi) {
my $f = $fi->{Filename};
die "$f ?" if $f =~ m#/|^\.|\.dsc$|\.tmp$#;
my @dfi = dsc_files_info();
foreach my $fi (@dfi) {
my $f = $fi->{Filename};
die "$f ?" if $f =~ m#/|^\.|\.dsc$|\.tmp$#;
- my $upper_f = "
../../..
/../$f";
+ my $upper_f = "
$maindir
/../$f";
printdebug "considering reusing $f: ";
printdebug "considering reusing $f: ";
@@
-2386,6
+2384,10
@@
END
my $path = $ENV{PATH} or die;
my $path = $ENV{PATH} or die;
+ # we use ../../gbp-pq-output, which (given that we are in
+ # $playground/PLAYTREE, and $playground is .git/dgit/unpack,
+ # is .git/dgit.
+
foreach my $use_absurd (qw(0 1)) {
runcmd @git, qw(checkout -q unpa);
runcmd @git, qw(update-ref -d refs/heads/patch-queue/unpa);
foreach my $use_absurd (qw(0 1)) {
runcmd @git, qw(checkout -q unpa);
runcmd @git, qw(update-ref -d refs/heads/patch-queue/unpa);
@@
-2470,8
+2472,8
@@
END
@output = $lastpush_mergeinput;
}
}
@output = $lastpush_mergeinput;
}
}
- changedir
'../../../..'
;
- rmtree
($ud)
;
+ changedir
$maindir
;
+ rmtree
$playground
;
return @output;
}
return @output;
}
@@
-3168,7
+3170,7
@@
END
my $author = clogp_authline $useclogp;
my $cversion = getfield $useclogp, 'Version';
my $author = clogp_authline $useclogp;
my $cversion = getfield $useclogp, 'Version';
- my $mcf =
".git/dgit
/mergecommit";
+ my $mcf =
dgit_privdir()."
/mergecommit";
open MC, ">", $mcf or die "$mcf $!";
print MC <<END or die $!;
tree $tree
open MC, ">", $mcf or die "$mcf $!";
print MC <<END or die $!;
tree $tree
@@
-3228,7
+3230,6
@@
END
fetch_from_archive_record_1($hash);
if (defined $skew_warning_vsn) {
fetch_from_archive_record_1($hash);
if (defined $skew_warning_vsn) {
- mkpath '.git/dgit';
printdebug "SKEW CHECK WANT $skew_warning_vsn\n";
my $gotclogp = commit_getclogp($hash);
my $got_vsn = getfield $gotclogp, 'Version';
printdebug "SKEW CHECK WANT $skew_warning_vsn\n";
my $gotclogp = commit_getclogp($hash);
my $got_vsn = getfield $gotclogp, 'Version';
@@
-3267,8
+3268,9
@@
sub setup_mergechangelogs (;$) {
my $driver = 'dpkg-mergechangelogs';
my $cb = "merge.$driver";
my $driver = 'dpkg-mergechangelogs';
my $cb = "merge.$driver";
- my $attrs = '.git/info/attributes';
- ensuredir '.git/info';
+ confess unless defined $maindir;
+ my $attrs = "$maindir_gitcommon/info/attributes";
+ ensuredir "$maindir_gitcommon/info";
open NATTRS, ">", "$attrs.new" or die "$attrs.new $!";
if (!open ATTRS, "<", $attrs) {
open NATTRS, ">", "$attrs.new" or die "$attrs.new $!";
if (!open ATTRS, "<", $attrs) {
@@
-3313,15
+3315,16
@@
sub ensure_setup_existing_tree () {
set_local_git_config $k, 'true';
}
set_local_git_config $k, 'true';
}
-sub open_gitattrs () {
- my $gai = new IO::File ".git/info/attributes"
+sub open_main_gitattrs () {
+ confess 'internal error no maindir' unless defined $maindir;
+ my $gai = new IO::File "$maindir_gitcommon/info/attributes"
or $!==ENOENT
or $!==ENOENT
- or die "open
.git
/info/attributes: $!";
+ or die "open
$maindir_gitcommon
/info/attributes: $!";
return $gai;
}
sub is_gitattrs_setup () {
return $gai;
}
sub is_gitattrs_setup () {
- my $gai = open_gitattrs();
+ my $gai = open_
main_
gitattrs();
return 0 unless $gai;
while (<$gai>) {
return 1 if m{^\[attr\]dgit-defuse-attrs\s};
return 0 unless $gai;
while (<$gai>) {
return 1 if m{^\[attr\]dgit-defuse-attrs\s};
@@
-3341,15
+3344,15
@@
sub setup_gitattrs (;$) {
END
return;
}
END
return;
}
- my $af = "
.git
/info/attributes";
- ensuredir
'.git/info'
;
+ my $af = "
$maindir_gitcommon
/info/attributes";
+ ensuredir
"$maindir_gitcommon/info"
;
open GAO, "> $af.new" or die $!;
print GAO <<END or die $!;
* dgit-defuse-attrs
[attr]dgit-defuse-attrs $negate_harmful_gitattrs
# ^ see GITATTRIBUTES in dgit(7) and dgit setup-new-tree in dgit(1)
END
open GAO, "> $af.new" or die $!;
print GAO <<END or die $!;
* dgit-defuse-attrs
[attr]dgit-defuse-attrs $negate_harmful_gitattrs
# ^ see GITATTRIBUTES in dgit(7) and dgit setup-new-tree in dgit(1)
END
- my $gai = open_gitattrs();
+ my $gai = open_
main_
gitattrs();
if ($gai) {
while (<$gai>) {
chomp;
if ($gai) {
while (<$gai>) {
chomp;
@@
-3585,6
+3588,7
@@
sub clone ($) {
my $multi_fetched = fork_for_multisuite(sub {
printdebug "multi clone before fetch merge\n";
changedir $dstdir;
my $multi_fetched = fork_for_multisuite(sub {
printdebug "multi clone before fetch merge\n";
changedir $dstdir;
+ record_maindir();
});
if ($multi_fetched) {
printdebug "multi clone after fetch merge\n";
});
if ($multi_fetched) {
printdebug "multi clone after fetch merge\n";
@@
-3599,6
+3603,7
@@
sub clone ($) {
mkdir $dstdir or fail "create \`$dstdir': $!";
changedir $dstdir;
runcmd @git, qw(init -q);
mkdir $dstdir or fail "create \`$dstdir': $!";
changedir $dstdir;
runcmd @git, qw(init -q);
+ record_maindir();
setup_new_tree();
clone_set_head();
my $giturl = access_giturl(1);
setup_new_tree();
clone_set_head();
my $giturl = access_giturl(1);
@@
-3738,7
+3743,7
@@
sub maybe_split_brain_save ($$$) {
my ($headref, $dgitview, $msg) = @_;
# => message fragment "$saved" describing disposition of $dgitview
return "commit id $dgitview" unless defined $split_brain_save;
my ($headref, $dgitview, $msg) = @_;
# => message fragment "$saved" describing disposition of $dgitview
return "commit id $dgitview" unless defined $split_brain_save;
- my @cmd = (shell_cmd
"cd ../../../.."
,
+ my @cmd = (shell_cmd
'cd "$1"; shift', $maindir
,
@git, qw(update-ref -m),
"dgit --dgit-view-save $msg HEAD=$headref",
$split_brain_save, $dgitview);
@git, qw(update-ref -m),
"dgit --dgit-view-save $msg HEAD=$headref",
$split_brain_save, $dgitview);
@@
-3839,8
+3844,7
@@
sub pseudomerge_make_commit ($$$$ $$) {
: !length $overwrite_version ? " --overwrite"
: " --overwrite=".$overwrite_version;
: !length $overwrite_version ? " --overwrite"
: " --overwrite=".$overwrite_version;
- mkpath '.git/dgit';
- my $pmf = ".git/dgit/pseudomerge";
+ my $pmf = dgit_privdir()."/pseudomerge";
open MC, ">", $pmf or die "$pmf $!";
print MC <<END or die $!;
tree $tree
open MC, ">", $pmf or die "$pmf $!";
print MC <<END or die $!;
tree $tree
@@
-4148,7
+4152,7
@@
END
rpush_handle_protovsn_bothends() if $we_are_initiator;
select_tagformat();
rpush_handle_protovsn_bothends() if $we_are_initiator;
select_tagformat();
- my $clogpfn =
".git/dgit
/changelog.822.tmp";
+ my $clogpfn =
dgit_privdir()."
/changelog.822.tmp";
runcmd shell_cmd "exec >$clogpfn", qw(dpkg-parsechangelog);
responder_send_file('parsed-changelog', $clogpfn);
runcmd shell_cmd "exec >$clogpfn", qw(dpkg-parsechangelog);
responder_send_file('parsed-changelog', $clogpfn);
@@
-4177,7
+4181,7
@@
END
if (madformat_wantfixup($format)) {
# user might have not used dgit build, so maybe do this now:
if (quiltmode_splitbrain()) {
if (madformat_wantfixup($format)) {
# user might have not used dgit build, so maybe do this now:
if (quiltmode_splitbrain()) {
- changedir $
u
d;
+ changedir $
playgroun
d;
quilt_make_fake_dsc($upstreamversion);
my $cachekey;
($dgithead, $cachekey) =
quilt_make_fake_dsc($upstreamversion);
my $cachekey;
($dgithead, $cachekey) =
@@
-4190,7
+4194,7
@@
END
$actualhead, $dgithead,
$archive_hash);
$maintviewhead = $actualhead;
$actualhead, $dgithead,
$archive_hash);
$maintviewhead = $actualhead;
- changedir
'../../../..'
;
+ changedir
$maindir
;
prep_ud(); # so _only_subdir() works, below
} else {
commit_quilty_patch();
prep_ud(); # so _only_subdir() works, below
} else {
commit_quilty_patch();
@@
-4221,13
+4225,13
@@
END
}
}
}
}
- changedir $
u
d;
+ changedir $
playgroun
d;
progress "checking that $dscfn corresponds to HEAD";
runcmd qw(dpkg-source -x --),
progress "checking that $dscfn corresponds to HEAD";
runcmd qw(dpkg-source -x --),
- $dscpath =~ m#^/# ? $dscpath : "
../../..
/$dscpath";
+ $dscpath =~ m#^/# ? $dscpath : "
$maindir
/$dscpath";
my ($tree,$dir) = mktree_in_ud_from_only_subdir("source package");
check_for_vendor_patches() if madformat($dsc->{format});
my ($tree,$dir) = mktree_in_ud_from_only_subdir("source package");
check_for_vendor_patches() if madformat($dsc->{format});
- changedir
'../../../..'
;
+ changedir
$maindir
;
my @diffcmd = (@git, qw(diff --quiet), $tree, $dgithead);
debugcmd "+",@diffcmd;
$!=0; $?=-1;
my @diffcmd = (@git, qw(diff --quiet), $tree, $dgithead);
debugcmd "+",@diffcmd;
$!=0; $?=-1;
@@
-4299,7
+4303,7
@@
END
}
my @tagwants = push_tagwants($cversion, $dgithead, $maintviewhead,
}
my @tagwants = push_tagwants($cversion, $dgithead, $maintviewhead,
-
".git/dgit
/tag");
+
dgit_privdir()."
/tag");
my @tagobjfns;
supplementary_message(<<'END');
my @tagobjfns;
supplementary_message(<<'END');
@@
-4389,7
+4393,7
@@
END
}
sub pre_clone () {
}
sub pre_clone () {
- no
_local_git_cfg
();
+ no
t_necessarily_a_tree
();
}
sub cmd_clone {
parseopts();
}
sub cmd_clone {
parseopts();
@@
-4603,7
+4607,7
@@
sub i_method {
}
sub pre_rpush () {
}
sub pre_rpush () {
- no
_local_git_cfg
();
+ no
t_necessarily_a_tree
();
}
sub cmd_rpush {
my $host = nextarg;
}
sub cmd_rpush {
my $host = nextarg;
@@
-4823,7
+4827,7
@@
sub quiltify_dpkg_commit ($$$;$) {
my ($patchname,$author,$msg, $xinfo) = @_;
$xinfo //= '';
my ($patchname,$author,$msg, $xinfo) = @_;
$xinfo //= '';
- mkpath '.git/dgit';
+ mkpath '.git/dgit';
# we are in playtree
my $descfn = ".git/dgit/quilt-description.tmp";
open O, '>', $descfn or die "$descfn: $!";
$msg =~ s/\n+/\n\n/;
my $descfn = ".git/dgit/quilt-description.tmp";
open O, '>', $descfn or die "$descfn: $!";
$msg =~ s/\n+/\n\n/;
@@
-5016,11
+5020,11
@@
END
my $dgitview = git_rev_parse 'HEAD';
my $dgitview = git_rev_parse 'HEAD';
- changedir
'../../../..'
;
+ changedir
$maindir
;
# When we no longer need to support squeeze, use --create-reflog
# instead of this:
# When we no longer need to support squeeze, use --create-reflog
# instead of this:
- ensuredir "
.git
/logs/refs/dgit-intern";
- my $makelogfh = new IO::File "
.git
/logs/refs/$splitbraincache", '>>'
+ ensuredir "
$maindir_gitcommon
/logs/refs/dgit-intern";
+ my $makelogfh = new IO::File "
$maindir_gitcommon
/logs/refs/$splitbraincache", '>>'
or die $!;
my $oldcache = git_get_ref "refs/$splitbraincache";
or die $!;
my $oldcache = git_get_ref "refs/$splitbraincache";
@@
-5041,7
+5045,7
@@
END
runcmd @git, qw(update-ref -m), $cachekey, "refs/$splitbraincache",
$dgitview;
runcmd @git, qw(update-ref -m), $cachekey, "refs/$splitbraincache",
$dgitview;
- changedir
'.git/dgit/unpack/work'
;
+ changedir
"$playground/work"
;
my $saved = maybe_split_brain_save $headref, $dgitview, "converted";
progress "dgit view: created ($saved)";
my $saved = maybe_split_brain_save $headref, $dgitview, "converted";
progress "dgit view: created ($saved)";
@@
-5340,7
+5344,7
@@
END
my $headref = git_rev_parse('HEAD');
prep_ud();
my $headref = git_rev_parse('HEAD');
prep_ud();
- changedir $
u
d;
+ changedir $
playgroun
d;
my $upstreamversion = upstreamversion $version;
my $upstreamversion = upstreamversion $version;
@@
-5352,9
+5356,9
@@
END
die 'bug' if $split_brain && !$need_split_build_invocation;
die 'bug' if $split_brain && !$need_split_build_invocation;
- changedir
'../../../..'
;
+ changedir
$maindir
;
runcmd_ordryrun_local
runcmd_ordryrun_local
- @git, qw(pull --ff-only -q
.git/dgit/unpack/work
master);
+ @git, qw(pull --ff-only -q
), "$playground/work", qw(
master);
}
sub quilt_fixup_mkwork ($) {
}
sub quilt_fixup_mkwork ($) {
@@
-5370,7
+5374,7
@@
sub quilt_fixup_linkorigs ($$) {
my ($upstreamversion, $fn) = @_;
# calls $fn->($leafname);
my ($upstreamversion, $fn) = @_;
# calls $fn->($leafname);
- foreach my $f (<
../../..
/../*>) { #/){
+ foreach my $f (<
$maindir
/../*>) { #/){
my $b=$f; $b =~ s{.*/}{};
{
local ($debuglevel) = $debuglevel-1;
my $b=$f; $b =~ s{.*/}{};
{
local ($debuglevel) = $debuglevel-1;
@@
-5449,12
+5453,12
@@
END
debian/control debian/changelog);
foreach my $maybe (qw(debian/patches debian/source/options
debian/tests/control)) {
debian/control debian/changelog);
foreach my $maybe (qw(debian/patches debian/source/options
debian/tests/control)) {
- next unless stat_exists "
../../..
/$maybe";
+ next unless stat_exists "
$maindir
/$maybe";
push @files, $maybe;
}
my $debtar= srcfn $fakeversion,'.debian.tar.gz';
push @files, $maybe;
}
my $debtar= srcfn $fakeversion,'.debian.tar.gz';
- runcmd qw(env GZIP=-1n tar -zcf), "./$debtar", qw(-C
../../..)
, @files;
+ runcmd qw(env GZIP=-1n tar -zcf), "./$debtar", qw(-C
), $maindir
, @files;
$dscaddfile->($debtar);
close $fakedsc or die $!;
$dscaddfile->($debtar);
close $fakedsc or die $!;
@@
-5463,7
+5467,7
@@
END
sub quilt_check_splitbrain_cache ($$) {
my ($headref, $upstreamversion) = @_;
# Called only if we are in (potentially) split brain mode.
sub quilt_check_splitbrain_cache ($$) {
my ($headref, $upstreamversion) = @_;
# Called only if we are in (potentially) split brain mode.
- # Called in
$u
d.
+ # Called in
playgroun
d.
# Computes the cache key and looks in the cache.
# Returns ($dgit_view_commitid, $cachekey) or (undef, $cachekey)
# Computes the cache key and looks in the cache.
# Returns ($dgit_view_commitid, $cachekey) or (undef, $cachekey)
@@
-5497,8
+5501,8
@@
sub quilt_check_splitbrain_cache ($$) {
debugcmd "|(probably)",@cmd;
my $child = open GC, "-|"; defined $child or die $!;
if (!$child) {
debugcmd "|(probably)",@cmd;
my $child = open GC, "-|"; defined $child or die $!;
if (!$child) {
- chdir
'../../..'
or die $!;
- if (!stat "
.git
/logs/refs/$splitbraincache") {
+ chdir
$maindir
or die $!;
+ if (!stat "
$maindir_gitcommon
/logs/refs/$splitbraincache") {
$! == ENOENT or die $!;
printdebug ">(no reflog)\n";
exit 0;
$! == ENOENT or die $!;
printdebug ">(no reflog)\n";
exit 0;
@@
-6068,15
+6072,17
@@
sub cmd_gbp_build {
}
my @cmd = opts_opt_multi_cmd @gbp_build;
}
my @cmd = opts_opt_multi_cmd @gbp_build;
- push @cmd, (qw(-us -uc --git-no-sign-tags), "--git-builder=@dbp");
+ push @cmd, (qw(-us -uc --git-no-sign-tags),
+ "--git-builder=".(shellquote @dbp));
if ($gbp_make_orig) {
if ($gbp_make_orig) {
-
ensuredir '.git/dgit'
;
- my $ok =
'.git/dgit/origs-gen-ok'
;
+
my $priv = dgit_privdir()
;
+ my $ok =
"$priv/origs-gen-ok"
;
unlink $ok or $!==&ENOENT or die $!;
my @origs_cmd = @cmd;
push @origs_cmd, qw(--git-cleaner=true);
unlink $ok or $!==&ENOENT or die $!;
my @origs_cmd = @cmd;
push @origs_cmd, qw(--git-cleaner=true);
- push @origs_cmd, "--git-prebuild=touch $ok .git/dgit/no-such-dir/ok";
+ push @origs_cmd, "--git-prebuild=".
+ "touch ".(shellquote $ok)." ".(shellquote "$priv/no-such-dir/ok");
push @origs_cmd, @ARGV;
if (act_local()) {
debugcmd @origs_cmd;
push @origs_cmd, @ARGV;
if (act_local()) {
debugcmd @origs_cmd;
@@
-6139,10
+6145,10
@@
sub build_source {
} else {
my @cmd = (@dpkgsource, qw(-b --));
if ($split_brain) {
} else {
my @cmd = (@dpkgsource, qw(-b --));
if ($split_brain) {
- changedir $
u
d;
+ changedir $
playgroun
d;
runcmd_ordryrun_local @cmd, "work";
my @udfiles = <${package}_*>;
runcmd_ordryrun_local @cmd, "work";
my @udfiles = <${package}_*>;
- changedir
"../../.."
;
+ changedir
$maindir
;
foreach my $f (@udfiles) {
printdebug "source copy, found $f\n";
next unless
foreach my $f (@udfiles) {
printdebug "source copy, found $f\n";
next unless
@@
-6150,7
+6156,7
@@
sub build_source {
($f =~ m/\.debian\.tar(?:\.\w+)$/ &&
$f eq srcfn($version, $&));
printdebug "source copy, found $f - renaming\n";
($f =~ m/\.debian\.tar(?:\.\w+)$/ &&
$f eq srcfn($version, $&));
printdebug "source copy, found $f - renaming\n";
- rename "$
u
d/$f", "../$f" or $!==ENOENT
+ rename "$
playgroun
d/$f", "../$f" or $!==ENOENT
or fail "put in place new source file ($f): $!";
}
} else {
or fail "put in place new source file ($f): $!";
}
} else {
@@
-6380,7
+6386,7
@@
END
}
sub pre_archive_api_query () {
}
sub pre_archive_api_query () {
- no
_local_git_cfg
();
+ no
t_necessarily_a_tree
();
}
sub cmd_archive_api_query {
badusage "need only 1 subpath argument" unless @ARGV==1;
}
sub cmd_archive_api_query {
badusage "need only 1 subpath argument" unless @ARGV==1;
@@
-6399,7
+6405,7
@@
sub repos_server_url () {
}
sub pre_clone_dgit_repos_server () {
}
sub pre_clone_dgit_repos_server () {
- no
_local_git_cfg
();
+ no
t_necessarily_a_tree
();
}
sub cmd_clone_dgit_repos_server {
badusage "need destination argument" unless @ARGV==1;
}
sub cmd_clone_dgit_repos_server {
badusage "need destination argument" unless @ARGV==1;
@@
-6411,7
+6417,7
@@
sub cmd_clone_dgit_repos_server {
}
sub pre_print_dgit_repos_server_source_url () {
}
sub pre_print_dgit_repos_server_source_url () {
- no
_local_git_cfg
();
+ no
t_necessarily_a_tree
();
}
sub cmd_print_dgit_repos_server_source_url {
badusage "no arguments allowed to dgit print-dgit-repos-server-source-url"
}
sub cmd_print_dgit_repos_server_source_url {
badusage "no arguments allowed to dgit print-dgit-repos-server-source-url"
@@
-6420,6
+6426,15
@@
sub cmd_print_dgit_repos_server_source_url {
print $url, "\n" or die $!;
}
print $url, "\n" or die $!;
}
+sub pre_print_dpkg_source_ignores {
+ not_necessarily_a_tree();
+}
+sub cmd_print_dpkg_source_ignores {
+ badusage "no arguments allowed to dgit print-dpkg-source-ignores"
+ if @ARGV;
+ print "@dpkg_source_ignores\n" or die $!;
+}
+
sub cmd_setup_mergechangelogs {
badusage "no arguments allowed to dgit setup-mergechangelogs" if @ARGV;
local $isuite = 'DGIT-SETUP-TREE';
sub cmd_setup_mergechangelogs {
badusage "no arguments allowed to dgit setup-mergechangelogs" if @ARGV;
local $isuite = 'DGIT-SETUP-TREE';
@@
-6808,6
+6823,7
@@
$cmd =~ y/-/_/;
my $pre_fn = ${*::}{"pre_$cmd"};
$pre_fn->() if $pre_fn;
my $pre_fn = ${*::}{"pre_$cmd"};
$pre_fn->() if $pre_fn;
+record_maindir if $invoked_in_git_tree;
git_slurp_config();
my $fn = ${*::}{"cmd_$cmd"};
git_slurp_config();
my $fn = ${*::}{"cmd_$cmd"};