summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2017-01-28 08:57:08 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-16 12:25:49 +0100
commit73b4bbd35fce6d6ff2885271eb2fe20b768ae216 (patch)
treefb1ddb5e19532a3c227029d3d339529fd549185e /git-debrebase
parentd26b06ee24c7993251a00b6ab01121245d74b152 (diff)
git-debrebase: WIP before reorgs?
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase43
1 files changed, 43 insertions, 0 deletions
diff --git a/git-debrebase b/git-debrebase
index 0d9e936..8911c05 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'));
+