Code

git.git
15 years agodebug messages are off by default; use -d to enable.
Avery Pennarun [Sun, 26 Apr 2009 22:06:08 +0000 (18:06 -0400)]
debug messages are off by default; use -d to enable.

Instead of debug messages, we print a progress counter to stderr.

15 years agotest.sh: oops, never intended to count the raw number of commits.
Avery Pennarun [Sun, 26 Apr 2009 22:05:49 +0000 (18:05 -0400)]
test.sh: oops, never intended to count the raw number of commits.

Just needed to make sure the count was non-zero.

15 years agoSimplify merges even more aggressively.
Avery Pennarun [Sun, 26 Apr 2009 21:44:18 +0000 (17:44 -0400)]
Simplify merges even more aggressively.

If any one of the parents is the same as the current one, then clearly the
other parent branch isn't important, so throw it away entirely.

Can't remember why I didn't do this before, but if I rediscover it, it
definitely needs a unit test.

15 years agotest.sh: make sure no commit changes more than one file at a time.
Avery Pennarun [Sun, 26 Apr 2009 21:43:53 +0000 (17:43 -0400)]
test.sh: make sure no commit changes more than one file at a time.

15 years agoOnly copy a commit if it has at least one nonidentical parent.
Avery Pennarun [Sun, 26 Apr 2009 21:07:16 +0000 (17:07 -0400)]
Only copy a commit if it has at least one nonidentical parent.

This is a simplification of the previous logic.  I don't *think* it'll break
anything.

Results in far fewer useless merge commmits when playing with gitweb in the
git project:

git subtree split --prefix=gitweb --annotate='(split) ' 0a8f4f0^^..f2e7330
--onto=1130ef3

...and it doesn't *seem* to eliminate anything important.

15 years agoTrim some extra merge commits that don't need to go into the split tree.
Avery Pennarun [Sun, 26 Apr 2009 20:53:57 +0000 (16:53 -0400)]
Trim some extra merge commits that don't need to go into the split tree.

...and update test.sh to test for this.

15 years agotest.sh tweak
Avery Pennarun [Sun, 26 Apr 2009 20:33:38 +0000 (16:33 -0400)]
test.sh tweak

15 years agoAdd some basic assertions to test.sh.
Avery Pennarun [Sun, 26 Apr 2009 20:28:56 +0000 (16:28 -0400)]
Add some basic assertions to test.sh.

15 years agoAdd a 'create' helper function in test.sh.
Avery Pennarun [Sun, 26 Apr 2009 19:55:56 +0000 (15:55 -0400)]
Add a 'create' helper function in test.sh.

15 years agoClarify why we can't do 'git rev-list' with a path.
Avery Pennarun [Sun, 26 Apr 2009 19:54:42 +0000 (15:54 -0400)]
Clarify why we can't do 'git rev-list' with a path.

15 years agoTypo when searching for existing splits.
Avery Pennarun [Sun, 26 Apr 2009 13:55:59 +0000 (09:55 -0400)]
Typo when searching for existing splits.

15 years agoAdd --annotate option, and create recognizable file content during tests.
Avery Pennarun [Sun, 26 Apr 2009 12:59:12 +0000 (08:59 -0400)]
Add --annotate option, and create recognizable file content during tests.

15 years agotodo list
Avery Pennarun [Sun, 26 Apr 2009 12:53:14 +0000 (08:53 -0400)]
todo list

15 years agoChange test.sh to test the new add, merge, and pull commands.
Avery Pennarun [Sat, 25 Apr 2009 04:07:04 +0000 (00:07 -0400)]
Change test.sh to test the new add, merge, and pull commands.

15 years agoHandle it successfully if a given parent commit has no parents.
Avery Pennarun [Sat, 25 Apr 2009 04:06:45 +0000 (00:06 -0400)]
Handle it successfully if a given parent commit has no parents.

15 years agoAdd 'git subtree merge' and 'git subtree pull'.
Avery Pennarun [Sat, 25 Apr 2009 03:41:19 +0000 (23:41 -0400)]
Add 'git subtree merge' and 'git subtree pull'.

These are simple shortcuts for 'git merge -s subtree' and 'git pull -s
subtree', but it makes sense to have it all in one command.

15 years agoAdd a new 'git subtree add' command for adding subtrees from a given rev.
Avery Pennarun [Sat, 25 Apr 2009 03:28:30 +0000 (23:28 -0400)]
Add a new 'git subtree add' command for adding subtrees from a given rev.

15 years agoPass the path using the --prefix option instead of on the command line.
Avery Pennarun [Sat, 25 Apr 2009 02:57:14 +0000 (22:57 -0400)]
Pass the path using the --prefix option instead of on the command line.

I like this better.  It's more like git-read-tree and some other commands.

15 years agoOkay, that was a little too aggressive.
Avery Pennarun [Sat, 25 Apr 2009 02:36:06 +0000 (22:36 -0400)]
Okay, that was a little too aggressive.

Now we only prune out a commit if it has exactly one remaining parent and
that parent's tree is identical to ours.

But I also changed the test to create the initial "-s ours" merge in one
step instead of two, and that merge can be eliminated since one of its
parents doesn't affect the subdir at all, and is thus deleted.

15 years agoEven more aggressive commit trimming.
Avery Pennarun [Sat, 25 Apr 2009 02:05:30 +0000 (22:05 -0400)]
Even more aggressive commit trimming.

Now we cut out a commit if any of its parents had the same tree; just use
that parent in its place.  This makes the history look nice, but I don't
think it's quite right...

15 years agoPrune out some extra merge commits by comparing their parents correctly.
Avery Pennarun [Sat, 25 Apr 2009 01:49:19 +0000 (21:49 -0400)]
Prune out some extra merge commits by comparing their parents correctly.

15 years agoQuick test script for generating reasonably complex merge scenarios.
Avery Pennarun [Sat, 25 Apr 2009 01:35:50 +0000 (21:35 -0400)]
Quick test script for generating reasonably complex merge scenarios.

15 years agoSkip over empty commits.
Avery Pennarun [Fri, 24 Apr 2009 21:53:10 +0000 (17:53 -0400)]
Skip over empty commits.

But we still need to get rid of unnecessary merge commits somehow...

15 years agoHmm... can't actually filter rev-list on the subdir name.
Avery Pennarun [Fri, 24 Apr 2009 21:42:33 +0000 (17:42 -0400)]
Hmm... can't actually filter rev-list on the subdir name.

Otherwise we can't keep track of parent relationships.  Argh.

This change makes it "work", but we get a bunch of empty commits.

15 years agoAdded a --onto option, but it's so complicated I can't tell if it works.
Avery Pennarun [Fri, 24 Apr 2009 21:05:14 +0000 (17:05 -0400)]
Added a --onto option, but it's so complicated I can't tell if it works.

15 years agoUse information about prior splits to make sure merges work right.
Avery Pennarun [Fri, 24 Apr 2009 20:48:08 +0000 (16:48 -0400)]
Use information about prior splits to make sure merges work right.

15 years agoAdd a new --rejoin option.
Avery Pennarun [Fri, 24 Apr 2009 19:48:41 +0000 (15:48 -0400)]
Add a new --rejoin option.

The idea is to join the new split branch back into this one, so future
splits can append themselves to the old split branch.  We mark the split
branch's history in our merge commit, so we can pull it back out later.

15 years agoPrint out the newly created commitid at the end, for use in other scripts.
Avery Pennarun [Fri, 24 Apr 2009 18:52:27 +0000 (14:52 -0400)]
Print out the newly created commitid at the end, for use in other scripts.

15 years agoWe now copy the other stuff about a commit (changelog, author, etc).
Avery Pennarun [Fri, 24 Apr 2009 18:45:02 +0000 (14:45 -0400)]
We now copy the other stuff about a commit (changelog, author, etc).

15 years ago'git subtree split' now basically works.
Avery Pennarun [Fri, 24 Apr 2009 18:24:38 +0000 (14:24 -0400)]
'git subtree split' now basically works.

15 years agobasic options parsing and whatnot.
Avery Pennarun [Fri, 24 Apr 2009 18:13:34 +0000 (14:13 -0400)]
basic options parsing and whatnot.