Commit Graph

99 Commits

Author SHA1 Message Date
Avery Pennarun
5d1a5da411 todo 2009-07-10 15:14:33 -04:00
Avery Pennarun
b64a7aa26c Docs: when pushing to github, the repo path needs to end in .git
Reported by Thell Fowler.
2009-07-08 20:17:31 -04:00
Avery Pennarun
76a7356f56 todo 2009-07-07 17:41:38 -04:00
Avery Pennarun
6aa76263ee Some todo items reported by pmccurdy 2009-07-02 12:39:48 -04:00
Avery Pennarun
c8a98d4f87 update todo 2009-06-15 14:12:40 -04:00
Avery Pennarun
dd07906252 man page: add an EXAMPLES section. 2009-05-30 14:24:31 -04:00
Avery Pennarun
e75d1da38a Add basic git-subtree manpage in asciidoc format. 2009-05-30 14:06:58 -04:00
Avery Pennarun
d713e2d87a Make --squash work with the 'add' command too. 2009-05-30 04:13:47 -04:00
Avery Pennarun
1a8c36dc5f Fix splitting after using a squash merge. 2009-05-30 03:33:39 -04:00
Avery Pennarun
eb4fb91094 Don't squash-merge if the old and new commits are the same. 2009-05-30 03:33:17 -04:00
Avery Pennarun
1cc2cfff91 Basic "subtree merge --squash" support.
Instead of merging in the history of the entire subproject, just squash it
all into one commit, but try to at least track which commits we used so that
we can do future merges correctly.

Bonus feature: we can actually switch branches of the subproject this way,
just by "squash merging" back and forth from one tag to another.
2009-05-30 03:18:27 -04:00
Avery Pennarun
7ee9eef340 merge_msg() is really more like rejoin_msg(). 2009-05-30 01:51:38 -04:00
Avery Pennarun
8e79043c47 FIXME help for --squash option 2009-05-30 01:12:58 -04:00
Avery Pennarun
f4f29557e7 slightly rearrange help message for split. 2009-05-30 01:12:34 -04:00
Avery Pennarun
43a3951243 New --branch option to split command.
This is just a handy way to create a new branch from the newly-split subtree.
2009-05-30 01:12:32 -04:00
Avery Pennarun
f96bc79019 typo in comment 2009-05-30 00:47:59 -04:00
Avery Pennarun
7b7ba4bb37 More to-do items based on feedback 2009-05-24 15:29:25 -04:00
Avery Pennarun
ea28d67442 Abort if --rejoin fails.
Thanks to Eduardo Kienetz for noticing this.
2009-04-30 21:57:32 -04:00
Avery Pennarun
942dce5578 debug messages are off by default; use -d to enable.
Instead of debug messages, we print a progress counter to stderr.
2009-04-26 18:06:08 -04:00
Avery Pennarun
34a82bda77 test.sh: oops, never intended to count the raw number of commits.
Just needed to make sure the count was non-zero.
2009-04-26 18:05:49 -04:00
Avery Pennarun
795e730e71 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.
2009-04-26 17:44:18 -04:00
Avery Pennarun
fa16ab36ad test.sh: make sure no commit changes more than one file at a time. 2009-04-26 17:43:53 -04:00
Avery Pennarun
49cf82288a 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.
2009-04-26 17:07:16 -04:00
Avery Pennarun
a64f3a7286 Trim some extra merge commits that don't need to go into the split tree.
...and update test.sh to test for this.
2009-04-26 16:53:57 -04:00
Avery Pennarun
a046c7b124 test.sh tweak 2009-04-26 16:33:38 -04:00
Avery Pennarun
1490e1546a Add some basic assertions to test.sh. 2009-04-26 16:31:27 -04:00
Avery Pennarun
0ad3dd8534 Add a 'create' helper function in test.sh. 2009-04-26 15:55:56 -04:00
Avery Pennarun
1f73862f3b Clarify why we can't do 'git rev-list' with a path. 2009-04-26 15:54:42 -04:00
Avery Pennarun
86de04c6eb Typo when searching for existing splits. 2009-04-26 09:55:59 -04:00
Avery Pennarun
d0eb1b1417 Add --annotate option, and create recognizable file content during tests. 2009-04-26 08:59:12 -04:00
Avery Pennarun
8c384754d8 todo list 2009-04-26 08:53:14 -04:00
Avery Pennarun
a13a299996 Change test.sh to test the new add, merge, and pull commands. 2009-04-25 00:07:04 -04:00
Avery Pennarun
b9de53532c Handle it successfully if a given parent commit has no parents. 2009-04-25 00:06:45 -04:00
Avery Pennarun
13648af5ee 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.
2009-04-24 23:41:19 -04:00
Avery Pennarun
eb7b590c8c Add a new 'git subtree add' command for adding subtrees from a given rev. 2009-04-24 23:28:30 -04:00
Avery Pennarun
9a8821ff33 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.
2009-04-24 22:57:14 -04:00
Avery Pennarun
96db2c0448 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.
2009-04-24 22:38:58 -04:00
Avery Pennarun
d691265880 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...
2009-04-24 22:05:30 -04:00
Avery Pennarun
210d083904 Prune out some extra merge commits by comparing their parents correctly. 2009-04-24 21:49:19 -04:00
Avery Pennarun
847e868167 Quick test script for generating reasonably complex merge scenarios. 2009-04-24 21:35:50 -04:00
Avery Pennarun
768d6d1005 Skip over empty commits.
But we still need to get rid of unnecessary merge commits somehow...
2009-04-24 17:53:10 -04:00
Avery Pennarun
2c71b7c46d 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.
2009-04-24 17:42:33 -04:00
Avery Pennarun
33ff583ad7 Added a --onto option, but it's so complicated I can't tell if it works. 2009-04-24 17:05:14 -04:00
Avery Pennarun
8b4a77f2a1 Use information about prior splits to make sure merges work right. 2009-04-24 16:48:08 -04:00
Avery Pennarun
b77172f814 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.
2009-04-24 15:48:41 -04:00
Avery Pennarun
e25a6bf837 Print out the newly created commitid at the end, for use in other scripts. 2009-04-24 14:52:27 -04:00
Avery Pennarun
fd9500eef2 We now copy the other stuff about a commit (changelog, author, etc). 2009-04-24 14:45:02 -04:00
Avery Pennarun
2573354e9b 'git subtree split' now basically works. 2009-04-24 14:24:38 -04:00
Avery Pennarun
0ca71b3737 basic options parsing and whatnot. 2009-04-24 14:13:34 -04:00