X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topgit.git;a=blobdiff_plain;f=README;h=be7be1bc0b865aae5e705875bf7699f9b02a0d5c;hp=79eb99dff7f1cf429c30cdbf67b675c7a6d72653;hb=f59eab26c07ba70181c4677a1aab4bc42502271e;hpb=1dbf47b55529c1d7a6266b2b32f01e067f32a72e diff --git a/README b/README index 79eb99d..be7be1b 100644 --- a/README +++ b/README @@ -15,28 +15,28 @@ branch for each patch and providing few tools to maintain the branches. RATIONALE --------- -Why not use something like StGIT or Guilt or rebase -i for that? -The advantage of these tools is their simplicity; they work with patch -_series_ and defer to the reflog facility for version control of patches -(reordering of patches is not version-controlled at all). But there are -several disadvantages - for one, these tools (especially StGIT) do not -actually fit well with plain Git at all - it is basically impossible -to take advantage of index efectively when using StGIT. But more -importantly, these tools horribly fail in the face of distributed -environment. - -TopGit has been designed around three main tenents: +Why not use something like StGIT or Guilt or rebase -i for maintaining +your patch queue? The advantage of these tools is their simplicity; +they work with patch _series_ and defer to the reflog facility for +version control of patches (reordering of patches is not +version-controlled at all). But there are several disadvantages - +for one, these tools (especially StGIT) do not actually fit well +with plain Git at all: it is basically impossible to take advantage +of the index efectively when using StGIT. But more importantly, +these tools horribly fail in the face of distributed environment. + +TopGit has been designed around three main tenets: (i) TopGit is as thin layer on top of Git as possible. You still maintain your index and commit using Git, TopGit will only automate few indispensable tasks. (ii) TopGit is anxious about _keeping_ your history. It will -never rewrite your history and all metadata are also tracked by Git, -smoothly and non-obnoxiously. It is useful if there is a _single_ -point when the history is cleaned up, and that is at the point of -inclusion in the upstream project; locally, you can see how your -patch has evolved and easily return to older versions. +never rewrite your history and all metadata is also tracked by Git, +smoothly and non-obnoxiously. It is good to have a _single_ point +when the history is cleaned up, and that is at the point of inclusion +in the upstream project; locally, you can see how your patch has evolved +and easily return to older versions. (iii) TopGit is specifically designed to work in distributed environment. You can have several instances of TopGit-aware repositories @@ -63,9 +63,8 @@ Of course, TopGit is perhaps not the right tool for you: simpler, conceptually. If you just want to make a linear purely-local patch queue, deferring to StGIT instead might make more sense. - (ii) While keeping your history anxiously, in some extreme -cases the TopGit-generated history graph will perhaps be a little -too complex. ;-) + (ii) When using TopGit, your history can get a little hairy +over time, especially with all the merges rippling through. ;-) SYNOPSIS @@ -111,8 +110,8 @@ SYNOPSIS tg: you will want to switch to a different branch. $ ..resolve.. $ git commit + $ tg create tg: Resuming t/whatever setup... - $ tg create t/whatever $ ..hack.. $ git commit @@ -257,8 +256,12 @@ tg summary Show overview of all TopGit-tracked topic branches and their up-to-date status ('0' marks that it introduces no own changes, 'D' marks that it is out-of-date wrt. its dependencies, + '!' marks that it has missing dependencies (even recursively), 'B' marks that it is out-of-date wrt. its base). + TODO: Speed up by an order of magnitude + TODO: Graph view + tg update ~~~~~~~~~ Update the current topic branch wrt. changes in the branches @@ -274,6 +277,9 @@ tg update TODO: Some infrastructure for sharing topic branches between repositories easily +TODO: tg depend for adding/removing dependencies smoothly +TODO: tg collapse for creating a one-commit-per-patch tidied up + history (for pulling by upstream) IMPLEMENTATION