From 73b4bbd35fce6d6ff2885271eb2fe20b768ae216 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 28 Jan 2017 08:57:08 +0000 Subject: [PATCH 1/1] git-debrebase: WIP before reorgs? --- git-debrebase | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/git-debrebase b/git-debrebase index 0d9e936d..8911c057 100755 --- a/git-debrebase +++ b/git-debrebase @@ -35,5 +35,48 @@ sub cfg ($) { memoize('cfg'); +# usage +# git debrebase launder + +sub get_commit ($) { + my ($objid) = @_; + my ($type,$data) = git_cat_file $objid; + die unless $type eq 'commit'; + $data =~ m/(?<=\n)\n/; + return ($`,$'); +} + +memoize('get_commit'); + +sub DDEB () { return 0x1; } +sub DUPS () { return 0x2; } +sub DPAT () { return 0x4; } + +sub launder () { + # go through commits backwards + # we generate two lists of commits to apply + my (@deb_cl, @ups_cl); + my $cur = git_rev_parse('HEAD'); + for (;;) { + my ($h,$m) = get_commit $cur; + my ($t) = $h =~ m/^tree (\w+)$/m; defined $t or die $cur; + my (@p) = $h =~ m/^parent (\w+)$/m; + my (@d) = map { get_differs $t, $_ } @p; + if (@p == 1) { + my ($d) = $d[0]; + if ($d == DPAT) { + # changes on debian/patches, discard it + $cur = $p[0]; + next; + } + if ($d & DPAT) { + +} + +if ($ARGV[0] eq 'launder') { + launder(); +} + use Data::Dumper; print Dumper(cfg('wombat.foo.bar')); + -- 2.30.2