From 1bd90415deccc4562e0fb4d0f8e58140aa687ac1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 00:32:15 -0700 Subject: [PATCH 0001/2612] Keep track of to-do document. This is written in a form of to-do list for me, so if I say "accept patch", it means I do not currently plan to do that myself. People interested in seeing it materialize please take a hint. Signed-off-by: Junio C Hamano --- TODO | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 TODO diff --git a/TODO b/TODO new file mode 100644 index 00000000000000..15891f81e0fa99 --- /dev/null +++ b/TODO @@ -0,0 +1,95 @@ +What to expect after 0.99.5 +=========================== + +This is written in a form of to-do list for me, so if I say +"accept patch", it means I do not currently plan to do that +myself. People interested in seeing it materialize please take +a hint. + + +Documentation +------------- + +* Accept patches from people who actually have done CVS + migration and update the cvs-migration documentation. + Link the documentation from the main git.txt page. + +* Update the SubmittingPatches document to add MUA specific + hints on how to disable unwanted MIME and flowed-text by + collecting past list postings. Accept patches from people who + was hit by shiny blue bat to update the same. + +* Talk about using rsync just once at the beginning when + initializing a remote repository so that local packs do not + need to be expanded. I personally do not think we need tool + support for this. + +* Update tutorial to cover shared repository style a bit more, + maybe with a toy project that involves two or three + repositories. + +* Update tutorial to cover setting up repository hooks to do + common tasks. + +* Get help to properly use asciidoc in tutorial. + +* Maybe justify and demonstrate an Octopus in the tutorial. Add + it to the glossary. + + +Technical (heavier) +------------------- + +* Tony Luck reported an unfortunate glitch in the 3-way merge. + Encourage discussions to come up with a not-so-expensive way + to catch the kind of ambiguities that led to his misery. + + +Technical (milder) +------------------ + +* When the branch head pointed by $GIT_DIR/HEAD changes while + the index file and working tree are looking the other way + (e.g. somebody pushed into your repository, or you ran "git + fetch" to update the ref your working tree is on), "git + checkout" without -f gets confused. Figure out a good way to + handle this. + +* "git commit -m" should work for initial commits and perhaps + merge commits as well. Warning about merge is still a good + thing to do, while -m is useful in scripted non-interactive + use, so we need to be careful. + +* Encourage concrete proposals to commit log message templates + we discussed some time ago. + +* Bug Ryan and work with him to update send-email easier to use. + +* Look at portability fixes from Jason Riedy + + http://www.cs.berkeley.edu/~ejr/gits/git.git#portable + +* Accept patches to cause "read-tree -u" delete a directory when + it makes it empty. + +* Perhaps accept patches to introduce the concept of "patch flow + expressed as ref mappings" Josef has been advocating about. + +* MIMEified applymbox to grok B and Q encodings in headers and + turn them into UTF-8; unwrap QP; explode multipart. + +* "git cherry-pick" that applies the patch an existing commit + introduces in its ancestry chain, possibly using the 3-way + merge machinery; update rebase using the cherry-pick command. + Carl's redo/undo might fall out naturally from this. + +* A tool to detect, show and prune already merged topic + branches. + +* Perhaps "git branch -d" to delete a branch. + +* Enhance "git repack" to not always use --all; this would be + handy if the repository contains wagging heads like "pu" in + git.git repository. + +* Remove "git clone-dumb-http". From b22ee7de4ec1d3c4d9a308d7c7afd68e0decf3f2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 00:36:35 -0700 Subject: [PATCH 0002/2612] Updates 2005-08-25 * Link howto docs from the git.txt page. * Fetching into the current branch bug. * Initial commit with -m/-F flags. * EJR portable patches. * Mention undo/redo. * Use 3-way merge more. Signed-off-by: Junio C Hamano --- TODO | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 15891f81e0fa99..cc4dc346498b45 100644 --- a/TODO +++ b/TODO @@ -14,6 +14,8 @@ Documentation migration and update the cvs-migration documentation. Link the documentation from the main git.txt page. +* Link howto docs from the git.txt page. [DONE] + * Update the SubmittingPatches document to add MUA specific hints on how to disable unwanted MIME and flowed-text by collecting past list postings. Accept patches from people who @@ -53,12 +55,12 @@ Technical (milder) (e.g. somebody pushed into your repository, or you ran "git fetch" to update the ref your working tree is on), "git checkout" without -f gets confused. Figure out a good way to - handle this. + handle this. [DONE - waiting for response] * "git commit -m" should work for initial commits and perhaps merge commits as well. Warning about merge is still a good thing to do, while -m is useful in scripted non-interactive - use, so we need to be careful. + use, so we need to be careful. [DONE - waiting for response] * Encourage concrete proposals to commit log message templates we discussed some time ago. @@ -69,12 +71,17 @@ Technical (milder) http://www.cs.berkeley.edu/~ejr/gits/git.git#portable + [Looked at it. Maybe promising. Maybe not.] + * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. * Perhaps accept patches to introduce the concept of "patch flow expressed as ref mappings" Josef has been advocating about. +* Perhaps accept patches to do undo/redo, but I am reluctant to + add commands to cover very limited use cases right now. + * MIMEified applymbox to grok B and Q encodings in headers and turn them into UTF-8; unwrap QP; explode multipart. @@ -83,6 +90,8 @@ Technical (milder) merge machinery; update rebase using the cherry-pick command. Carl's redo/undo might fall out naturally from this. +* Redo "git revert" using 3-way merge machinery. [Done.] + * A tool to detect, show and prune already merged topic branches. From 6251e22585ffbb30cadcff89419a27b471d60ae1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 02:19:44 -0700 Subject: [PATCH 0003/2612] Update 2005-08-26 (early morning) Signed-off-by: Junio C Hamano --- TODO | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index cc4dc346498b45..52c73bd74271b2 100644 --- a/TODO +++ b/TODO @@ -46,6 +46,12 @@ Technical (heavier) Encourage discussions to come up with a not-so-expensive way to catch the kind of ambiguities that led to his misery. +* We might want to optimize cloning with GIT native transport + not to explode the pack, and store it in objects/pack instead. + We would need a tool to generate an idx file out of a pack + file for this. Also this itself may turn out to be a bad + idea, making the set of packs in repositories everybody has + different from each other. Technical (milder) ------------------ @@ -66,6 +72,7 @@ Technical (milder) we discussed some time ago. * Bug Ryan and work with him to update send-email easier to use. + [Resurrected it for Debian build.] * Look at portability fixes from Jason Riedy @@ -95,10 +102,28 @@ Technical (milder) * A tool to detect, show and prune already merged topic branches. -* Perhaps "git branch -d" to delete a branch. +* Set up an automated documentation rebuilding procedure at + kernel.org, using update hook mechanism. [Almost, but not quite.] * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in git.git repository. + +Technical (trivial) +------------------- + +* Perhaps "git branch -d" to delete a branch. + * Remove "git clone-dumb-http". + +* We would want test scripts for the relative directory path + stuff Linus has been working on. So far, the following + commands should be usable with relative directory paths: + + update-cache + ls-files + diff-files + diff-cache + diff-tree + rev-list From 788c7002ac87a334cf4286eb10f7c7e05a645aae Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 18:31:56 -0700 Subject: [PATCH 0004/2612] Quick update 2005-08-26 evening. Signed-off-by: Junio C Hamano --- TODO | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/TODO b/TODO index 52c73bd74271b2..488d384ff84397 100644 --- a/TODO +++ b/TODO @@ -19,7 +19,7 @@ Documentation * Update the SubmittingPatches document to add MUA specific hints on how to disable unwanted MIME and flowed-text by collecting past list postings. Accept patches from people who - was hit by shiny blue bat to update the same. + was hit by shiny blue bat to update the same. [NEEDSWORK] * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not @@ -31,7 +31,7 @@ Documentation repositories. * Update tutorial to cover setting up repository hooks to do - common tasks. + common tasks. [IN PROGRESS] * Get help to properly use asciidoc in tutorial. @@ -45,6 +45,8 @@ Technical (heavier) * Tony Luck reported an unfortunate glitch in the 3-way merge. Encourage discussions to come up with a not-so-expensive way to catch the kind of ambiguities that led to his misery. + [Underway. Thanks Daniel and Fredrik for taking an + initiative.] * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -53,6 +55,7 @@ Technical (heavier) idea, making the set of packs in repositories everybody has different from each other. + Technical (milder) ------------------ @@ -61,7 +64,12 @@ Technical (milder) (e.g. somebody pushed into your repository, or you ran "git fetch" to update the ref your working tree is on), "git checkout" without -f gets confused. Figure out a good way to - handle this. [DONE - waiting for response] + handle this. [DONE] + + We still have the same issue with "git fetch". Fetching into + the branch one is on _may_ need to do the same thing as + fetching into anonymous head and then do the resolve. At + least it needs a warning. [NEEDSWORK] * "git commit -m" should work for initial commits and perhaps merge commits as well. Warning about merge is still a good @@ -86,33 +94,44 @@ Technical (milder) * Perhaps accept patches to introduce the concept of "patch flow expressed as ref mappings" Josef has been advocating about. -* Perhaps accept patches to do undo/redo, but I am reluctant to - add commands to cover very limited use cases right now. +* Perhaps accept patches to do undo/redo. * MIMEified applymbox to grok B and Q encodings in headers and turn them into UTF-8; unwrap QP; explode multipart. * "git cherry-pick" that applies the patch an existing commit introduces in its ancestry chain, possibly using the 3-way - merge machinery; update rebase using the cherry-pick command. - Carl's redo/undo might fall out naturally from this. + merge machinery. [Done. Needs documentation.] -* Redo "git revert" using 3-way merge machinery. [Done.] +* Update rebase using the cherry-pick command. [Done] + +* Redo "git revert" using 3-way merge machinery. [Done] * A tool to detect, show and prune already merged topic branches. * Set up an automated documentation rebuilding procedure at - kernel.org, using update hook mechanism. [Almost, but not quite.] + kernel.org, using update hook mechanism. [Almost, but not + quite.] Describe it in a howto form [Done]. * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in git.git repository. +* Internally split the project into non-doc and doc parts; add + an extra root for the doc part and merge from it; move the + internal doc source to a separate repository, like the +Meta + repository; experiment if this results in a reasonable + workflow, and document it in howto form if it does. + +* Add names to all nodes in show-branch. + Technical (trivial) ------------------- +* Look at and merge Debian fixes from Tommi [Done]. + * Perhaps "git branch -d" to delete a branch. * Remove "git clone-dumb-http". @@ -127,3 +146,8 @@ Technical (trivial) diff-cache diff-tree rev-list + + +Local Variables: +mode: text +End: From 1310a28692a8e4b0abf3823095a941db0f97b14f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 26 Aug 2005 23:59:55 -0700 Subject: [PATCH 0005/2612] Update 2005-08-27 Signed-off-by: Junio C Hamano --- TODO | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 488d384ff84397..1ff1cb7c71795d 100644 --- a/TODO +++ b/TODO @@ -18,8 +18,8 @@ Documentation * Update the SubmittingPatches document to add MUA specific hints on how to disable unwanted MIME and flowed-text by - collecting past list postings. Accept patches from people who - was hit by shiny blue bat to update the same. [NEEDSWORK] + collecting past list postings [DONE]. Accept patches from + people who was hit by shiny blue bat to update the same. * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not @@ -69,7 +69,7 @@ Technical (milder) We still have the same issue with "git fetch". Fetching into the branch one is on _may_ need to do the same thing as fetching into anonymous head and then do the resolve. At - least it needs a warning. [NEEDSWORK] + least it needs a warning. [DONE] * "git commit -m" should work for initial commits and perhaps merge commits as well. Warning about merge is still a good @@ -126,6 +126,8 @@ Technical (milder) * Add names to all nodes in show-branch. +* Option to limit rename detection for more than N paths. + Technical (trivial) ------------------- From 04e9d4814fe43550dd000b48dc2ec129c9d32791 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 28 Aug 2005 02:46:52 -0700 Subject: [PATCH 0006/2612] Update 2005-08-28 --- TODO | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 1ff1cb7c71795d..77944484125f55 100644 --- a/TODO +++ b/TODO @@ -19,7 +19,7 @@ Documentation * Update the SubmittingPatches document to add MUA specific hints on how to disable unwanted MIME and flowed-text by collecting past list postings [DONE]. Accept patches from - people who was hit by shiny blue bat to update the same. + people who were hit by shiny blue bat to update the same. * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not @@ -86,7 +86,8 @@ Technical (milder) http://www.cs.berkeley.edu/~ejr/gits/git.git#portable - [Looked at it. Maybe promising. Maybe not.] + [Looked at it. Maybe promising. Maybe not. I am not sure + what the goals are. Need to respond to Jason.] * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -97,7 +98,7 @@ Technical (milder) * Perhaps accept patches to do undo/redo. * MIMEified applymbox to grok B and Q encodings in headers and - turn them into UTF-8; unwrap QP; explode multipart. + turn them into UTF-8; unwrap QP; explode multipart. [IN PROGRESS] * "git cherry-pick" that applies the patch an existing commit introduces in its ancestry chain, possibly using the 3-way @@ -118,6 +119,9 @@ Technical (milder) handy if the repository contains wagging heads like "pu" in git.git repository. +* Accept and apply "git repack --all" patch, except the part + that removes the existing packs. + * Internally split the project into non-doc and doc parts; add an extra root for the doc part and merge from it; move the internal doc source to a separate repository, like the +Meta From a5e54bc47507239d5903e21c5fdeaeddfae46523 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 28 Aug 2005 14:39:36 -0700 Subject: [PATCH 0007/2612] Update 2005-08-28 Signed-off-by: Junio C Hamano --- TODO | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/TODO b/TODO index 77944484125f55..29d824906f3afd 100644 --- a/TODO +++ b/TODO @@ -19,7 +19,8 @@ Documentation * Update the SubmittingPatches document to add MUA specific hints on how to disable unwanted MIME and flowed-text by collecting past list postings [DONE]. Accept patches from - people who were hit by shiny blue bat to update the same. + people who were hit by shiny blue bat to update the same [IN + PROGRESS]. * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not @@ -55,6 +56,11 @@ Technical (heavier) idea, making the set of packs in repositories everybody has different from each other. +* Maybe a pack optimizer. I am not convinced that packing all + objects into a single pack and removing all the existing pack + is the right way to go, since that would work against people + who already have those packs. + Technical (milder) ------------------ @@ -74,7 +80,7 @@ Technical (milder) * "git commit -m" should work for initial commits and perhaps merge commits as well. Warning about merge is still a good thing to do, while -m is useful in scripted non-interactive - use, so we need to be careful. [DONE - waiting for response] + use, so we need to be careful. [DONE] * Encourage concrete proposals to commit log message templates we discussed some time ago. @@ -86,8 +92,7 @@ Technical (milder) http://www.cs.berkeley.edu/~ejr/gits/git.git#portable - [Looked at it. Maybe promising. Maybe not. I am not sure - what the goals are. Need to respond to Jason.] + [Looked at it. Still undecided.] * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -98,29 +103,30 @@ Technical (milder) * Perhaps accept patches to do undo/redo. * MIMEified applymbox to grok B and Q encodings in headers and - turn them into UTF-8; unwrap QP; explode multipart. [IN PROGRESS] + turn them into UTF-8; unwrap QP; explode multipart. + [DONE. waiting for a bug to happen ;-) ] * "git cherry-pick" that applies the patch an existing commit introduces in its ancestry chain, possibly using the 3-way - merge machinery. [Done. Needs documentation.] + merge machinery. [DONE] -* Update rebase using the cherry-pick command. [Done] +* Update rebase using the cherry-pick command. [DONE] -* Redo "git revert" using 3-way merge machinery. [Done] +* Redo "git revert" using 3-way merge machinery. [DONE] * A tool to detect, show and prune already merged topic branches. * Set up an automated documentation rebuilding procedure at - kernel.org, using update hook mechanism. [Almost, but not - quite.] Describe it in a howto form [Done]. + kernel.org, using update hook mechanism. [DONE] Describe it + in a howto form [DONE]. * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in git.git repository. * Accept and apply "git repack --all" patch, except the part - that removes the existing packs. + that removes the existing packs. [Undecided] * Internally split the project into non-doc and doc parts; add an extra root for the doc part and merge from it; move the From 1323bb1f8e7e27ac6126c7c6754a72e5e4c87b69 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 29 Aug 2005 17:01:41 -0700 Subject: [PATCH 0008/2612] Update 2005-08-29 Signed-off-by: Junio C Hamano --- TODO | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 29d824906f3afd..e37f729cedb79d 100644 --- a/TODO +++ b/TODO @@ -27,6 +27,9 @@ Documentation need to be expanded. I personally do not think we need tool support for this. +* Review the existing docs and see if the repository + organization needs to be clarified further [NEXT]. + * Update tutorial to cover shared repository style a bit more, maybe with a toy project that involves two or three repositories. @@ -92,7 +95,7 @@ Technical (milder) http://www.cs.berkeley.edu/~ejr/gits/git.git#portable - [Looked at it. Still undecided.] + [Applied. Burned by one of them and backed out.] * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -126,7 +129,7 @@ Technical (milder) git.git repository. * Accept and apply "git repack --all" patch, except the part - that removes the existing packs. [Undecided] + that removes the existing packs. [DONE] * Internally split the project into non-doc and doc parts; add an extra root for the doc part and merge from it; move the @@ -134,7 +137,7 @@ Technical (milder) repository; experiment if this results in a reasonable workflow, and document it in howto form if it does. -* Add names to all nodes in show-branch. +* Add names to all nodes in show-branch [DONE]. * Option to limit rename detection for more than N paths. From 2206927d1cca64c8a86472364aa6b0d3bcfdd13b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 30 Aug 2005 23:32:23 -0700 Subject: [PATCH 0009/2612] Update 2005-08-30. Signed-off-by: Junio C Hamano --- TODO | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/TODO b/TODO index e37f729cedb79d..8fb166c6ebd059 100644 --- a/TODO +++ b/TODO @@ -28,19 +28,21 @@ Documentation support for this. * Review the existing docs and see if the repository - organization needs to be clarified further [NEXT]. + organization needs to be clarified further [STILL NEEDSWORK]. -* Update tutorial to cover shared repository style a bit more, - maybe with a toy project that involves two or three +* Update tutorial to cover shared repository style a bit more + [DONE], maybe with a toy project that involves two or three repositories. * Update tutorial to cover setting up repository hooks to do common tasks. [IN PROGRESS] -* Get help to properly use asciidoc in tutorial. +* Get help to properly use asciidoc in tutorial [Heck, ended up + learning it myself, DONE]. -* Maybe justify and demonstrate an Octopus in the tutorial. Add - it to the glossary. +* Maybe justify and demonstrate an Octopus in the tutorial + [STILL NEEDSWORK]. Add it to the glossary [Thanks Johannes, + DONE]. Technical (heavier) @@ -49,8 +51,8 @@ Technical (heavier) * Tony Luck reported an unfortunate glitch in the 3-way merge. Encourage discussions to come up with a not-so-expensive way to catch the kind of ambiguities that led to his misery. - [Underway. Thanks Daniel and Fredrik for taking an - initiative.] + [Daniel's patch look promising, just by judging from how clean + the re-organization part of read-tree looks like.] * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -60,7 +62,7 @@ Technical (heavier) different from each other. * Maybe a pack optimizer. I am not convinced that packing all - objects into a single pack and removing all the existing pack + objects into a single pack and removing all the existing panck is the right way to go, since that would work against people who already have those packs. @@ -95,7 +97,8 @@ Technical (milder) http://www.cs.berkeley.edu/~ejr/gits/git.git#portable - [Applied. Burned by one of them and backed out.] + [Applied. Burned by one of them and backed out, but otherwise + looks OK.] * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. From 11ddf5d6c5705f5d1696aa34f73956029a75403d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 31 Aug 2005 16:54:39 -0700 Subject: [PATCH 0010/2612] Fixed some initial repository gotchas. Signed-off-by: Junio C Hamano --- TODO | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/TODO b/TODO index 8fb166c6ebd059..8e0f0731206f8d 100644 --- a/TODO +++ b/TODO @@ -165,6 +165,18 @@ Technical (trivial) diff-tree rev-list + +Initial repository Gotchas +-------------------------- + +* `git fetch foo:bar` works OK, but `git checkout bar` + afterwards does not (missing `.git/HEAD`) + +* `git status` does not work well when missing `.git/HEAD` [DONE]. + +* `git log` either; git-log-script uses die which does not exist + [DONE]. + Local Variables: mode: text From c118bd1ed23ad102ccfdce9ffd54e9d3b053708c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 31 Aug 2005 17:42:05 -0700 Subject: [PATCH 0011/2612] Update 2005-08-31 evening. Signed-off-by: Junio C Hamano --- TODO | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 8e0f0731206f8d..b5cbe4846b117f 100644 --- a/TODO +++ b/TODO @@ -51,8 +51,7 @@ Technical (heavier) * Tony Luck reported an unfortunate glitch in the 3-way merge. Encourage discussions to come up with a not-so-expensive way to catch the kind of ambiguities that led to his misery. - [Daniel's patch look promising, just by judging from how clean - the re-organization part of read-tree looks like.] + [STARTED TESTING PATCH FROM DANIEL] * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -172,6 +171,8 @@ Initial repository Gotchas * `git fetch foo:bar` works OK, but `git checkout bar` afterwards does not (missing `.git/HEAD`) +* `git commit -s` did not add signoff for initial commit [DONE]. + * `git status` does not work well when missing `.git/HEAD` [DONE]. * `git log` either; git-log-script uses die which does not exist From 59b5be3f96c28cdd9f6fdf755b1739f5d195dc8a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 2 Sep 2005 01:25:00 -0700 Subject: [PATCH 0012/2612] Update 2005-09-02 early morning. Signed-off-by: Junio C Hamano --- TODO | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/TODO b/TODO index b5cbe4846b117f..25f93932326d01 100644 --- a/TODO +++ b/TODO @@ -18,9 +18,10 @@ Documentation * Update the SubmittingPatches document to add MUA specific hints on how to disable unwanted MIME and flowed-text by - collecting past list postings [DONE]. Accept patches from - people who were hit by shiny blue bat to update the same [IN - PROGRESS]. + collecting past list postings [DONE]. + +* Accept patches from people who were hit by shiny blue bat to + update the SubmittingPatches [ONGOING]. * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not @@ -31,18 +32,23 @@ Documentation organization needs to be clarified further [STILL NEEDSWORK]. * Update tutorial to cover shared repository style a bit more - [DONE], maybe with a toy project that involves two or three - repositories. + [DONE]. + +* Maybe update tutorial with a toy project that involves two or + three developers.. + +* Document the hooks. * Update tutorial to cover setting up repository hooks to do - common tasks. [IN PROGRESS] + common tasks. * Get help to properly use asciidoc in tutorial [Heck, ended up learning it myself, DONE]. * Maybe justify and demonstrate an Octopus in the tutorial - [STILL NEEDSWORK]. Add it to the glossary [Thanks Johannes, - DONE]. + [STILL NEEDSWORK]. + +* Add Octopus to the glossary [Thanks Johannes, DONE]. Technical (heavier) @@ -65,6 +71,8 @@ Technical (heavier) is the right way to go, since that would work against people who already have those packs. +* Maybe an Emacs VC backend. + Technical (milder) ------------------ @@ -76,7 +84,7 @@ Technical (milder) checkout" without -f gets confused. Figure out a good way to handle this. [DONE] - We still have the same issue with "git fetch". Fetching into +* We still have the same issue with "git fetch". Fetching into the branch one is on _may_ need to do the same thing as fetching into anonymous head and then do the resolve. At least it needs a warning. [DONE] @@ -89,6 +97,9 @@ Technical (milder) * Encourage concrete proposals to commit log message templates we discussed some time ago. +* Test apply.c patches from Robert Fitzsmons and have them + graduate to "master" branch. + * Bug Ryan and work with him to update send-email easier to use. [Resurrected it for Debian build.] @@ -111,6 +122,14 @@ Technical (milder) turn them into UTF-8; unwrap QP; explode multipart. [DONE. waiting for a bug to happen ;-) ] +* Maybe grok PGP signed text/plain in applymbox as well. + +* Perhaps a tool to revert a single file to pre-modification + state? git-cat-file blob `git-ls-files | grep foo` >foo or + git-cat-file blob `git-ls-tree HEAD foo` >foo? What should + the command be called? git-revert is taken so is + git-checkout. + * "git cherry-pick" that applies the patch an existing commit introduces in its ancestry chain, possibly using the 3-way merge machinery. [DONE] @@ -123,8 +142,10 @@ Technical (milder) branches. * Set up an automated documentation rebuilding procedure at - kernel.org, using update hook mechanism. [DONE] Describe it - in a howto form [DONE]. + kernel.org, using update hook mechanism. [DONE] + +* Describe automated documentation rebuilding in a howto form + [DONE]. * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in From 9eae4f198961df5ea9f47df6351f8853bae804f7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 2 Sep 2005 22:39:57 -0700 Subject: [PATCH 0013/2612] Update 2005-09-02 Signed-off-by: Junio C Hamano --- TODO | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 25f93932326d01..1892280311a033 100644 --- a/TODO +++ b/TODO @@ -26,10 +26,10 @@ Documentation * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not need to be expanded. I personally do not think we need tool - support for this. + support for this (but see below). * Review the existing docs and see if the repository - organization needs to be clarified further [STILL NEEDSWORK]. + organization needs to be clarified further [DONE]. * Update tutorial to cover shared repository style a bit more [DONE]. @@ -37,7 +37,7 @@ Documentation * Maybe update tutorial with a toy project that involves two or three developers.. -* Document the hooks. +* Document the hooks [DONE]. * Update tutorial to cover setting up repository hooks to do common tasks. @@ -59,6 +59,13 @@ Technical (heavier) to catch the kind of ambiguities that led to his misery. [STARTED TESTING PATCH FROM DANIEL] +* HPA has two projects, klibc and klibc-kbuild, that have large + set of overlapping files in different paths (i.e. one has many + renames from the other). There currently is no way for git to + help keep these two trees in sync, merging criss-cross between + them. The merge logic should be able to take advantage of + rename/copy detection smarts git-diff-* family has. + * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. We would need a tool to generate an idx file out of a pack From 4406b76d55990c6f531af1f8f8c62f4c82b0b9f1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Sep 2005 11:13:42 -0700 Subject: [PATCH 0014/2612] Update 2005-09-04 Signed-off-by: Junio C Hamano --- TODO | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 1892280311a033..396248f394e83b 100644 --- a/TODO +++ b/TODO @@ -105,7 +105,10 @@ Technical (milder) we discussed some time ago. * Test apply.c patches from Robert Fitzsmons and have them - graduate to "master" branch. + graduate to "master" branch [IN PROGRESS]. + +* Test read-tree reorganization patches from Daniel and have + them graduate to "master" branch [TESTED]. * Bug Ryan and work with him to update send-email easier to use. [Resurrected it for Debian build.] From 1d2cd55abc53201a5686d0e85879eda6b25dc9ad Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 5 Sep 2005 18:40:51 -0700 Subject: [PATCH 0015/2612] Updates 2005-09-05 Signed-off-by: Junio C Hamano --- TODO | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index 396248f394e83b..66c4bd77c1d1fe 100644 --- a/TODO +++ b/TODO @@ -26,7 +26,7 @@ Documentation * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not need to be expanded. I personally do not think we need tool - support for this (but see below). + support for this (but see below about optimized cloning). * Review the existing docs and see if the repository organization needs to be clarified further [DONE]. @@ -57,14 +57,15 @@ Technical (heavier) * Tony Luck reported an unfortunate glitch in the 3-way merge. Encourage discussions to come up with a not-so-expensive way to catch the kind of ambiguities that led to his misery. - [STARTED TESTING PATCH FROM DANIEL] + [Daniel's patch looks quite promising.] * HPA has two projects, klibc and klibc-kbuild, that have large set of overlapping files in different paths (i.e. one has many renames from the other). There currently is no way for git to help keep these two trees in sync, merging criss-cross between them. The merge logic should be able to take advantage of - rename/copy detection smarts git-diff-* family has. + rename/copy detection smarts git-diff-* family has [Discussion + ongoing]. * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -111,7 +112,8 @@ Technical (milder) them graduate to "master" branch [TESTED]. * Bug Ryan and work with him to update send-email easier to use. - [Resurrected it for Debian build.] + [Ryan's patch pushed into "master". Will see how well it is + accepted.] * Look at portability fixes from Jason Riedy @@ -129,8 +131,7 @@ Technical (milder) * Perhaps accept patches to do undo/redo. * MIMEified applymbox to grok B and Q encodings in headers and - turn them into UTF-8; unwrap QP; explode multipart. - [DONE. waiting for a bug to happen ;-) ] + turn them into UTF-8; unwrap QP; explode multipart. [DONE] * Maybe grok PGP signed text/plain in applymbox as well. @@ -174,6 +175,10 @@ Technical (milder) * Option to limit rename detection for more than N paths. +* Tool renames. [Discussion almost concluded, scheduled to + happen 0.99.7 with backward compatibility links, removing them + in 0.99.8.] + Technical (trivial) ------------------- @@ -182,7 +187,7 @@ Technical (trivial) * Perhaps "git branch -d" to delete a branch. -* Remove "git clone-dumb-http". +* Remove "git clone-dumb-http" [DONE]. * We would want test scripts for the relative directory path stuff Linus has been working on. So far, the following @@ -194,13 +199,14 @@ Technical (trivial) diff-cache diff-tree rev-list + rev-parse Initial repository Gotchas -------------------------- * `git fetch foo:bar` works OK, but `git checkout bar` - afterwards does not (missing `.git/HEAD`) + afterwards does not (missing `.git/HEAD`). * `git commit -s` did not add signoff for initial commit [DONE]. From c8a7baf32daa649e69662e1197fe8884e0cd0f92 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 7 Sep 2005 14:51:48 -0700 Subject: [PATCH 0016/2612] Update 2005-09-07 for post 0.99.6 Ready to push 0.99.6 out. Signed-off-by: Junio C Hamano --- TODO | 122 ++++++++++++----------------------------------------------- 1 file changed, 25 insertions(+), 97 deletions(-) diff --git a/TODO b/TODO index 66c4bd77c1d1fe..04a4d17d46882d 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -What to expect after 0.99.5 +What to expect after 0.99.6 =========================== This is written in a form of to-do list for me, so if I say @@ -14,12 +14,6 @@ Documentation migration and update the cvs-migration documentation. Link the documentation from the main git.txt page. -* Link howto docs from the git.txt page. [DONE] - -* Update the SubmittingPatches document to add MUA specific - hints on how to disable unwanted MIME and flowed-text by - collecting past list postings [DONE]. - * Accept patches from people who were hit by shiny blue bat to update the SubmittingPatches [ONGOING]. @@ -28,27 +22,13 @@ Documentation need to be expanded. I personally do not think we need tool support for this (but see below about optimized cloning). -* Review the existing docs and see if the repository - organization needs to be clarified further [DONE]. - -* Update tutorial to cover shared repository style a bit more - [DONE]. - * Maybe update tutorial with a toy project that involves two or three developers.. -* Document the hooks [DONE]. - * Update tutorial to cover setting up repository hooks to do common tasks. -* Get help to properly use asciidoc in tutorial [Heck, ended up - learning it myself, DONE]. - -* Maybe justify and demonstrate an Octopus in the tutorial - [STILL NEEDSWORK]. - -* Add Octopus to the glossary [Thanks Johannes, DONE]. +* Accept patches to finish missing docs. Technical (heavier) @@ -57,15 +37,21 @@ Technical (heavier) * Tony Luck reported an unfortunate glitch in the 3-way merge. Encourage discussions to come up with a not-so-expensive way to catch the kind of ambiguities that led to his misery. - [Daniel's patch looks quite promising.] + [Daniel's patch looks quite promising, so is the one from + Fredrik.] * HPA has two projects, klibc and klibc-kbuild, that have large set of overlapping files in different paths (i.e. one has many renames from the other). There currently is no way for git to help keep these two trees in sync, merging criss-cross between them. The merge logic should be able to take advantage of - rename/copy detection smarts git-diff-* family has [Discussion - ongoing]. + rename/copy detection smarts git-diff-* family has. Linus, + me, and Daniel outlined a smarter merge strategy for this. + Try them out. + +* To make it easier to experiment with different merge + strategies, make git-merge driver that will run merge backends + for the best merge [Outlined the idea; just do it]. * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -85,42 +71,24 @@ Technical (heavier) Technical (milder) ------------------ -* When the branch head pointed by $GIT_DIR/HEAD changes while - the index file and working tree are looking the other way - (e.g. somebody pushed into your repository, or you ran "git - fetch" to update the ref your working tree is on), "git - checkout" without -f gets confused. Figure out a good way to - handle this. [DONE] +* Tool renames [STARTED]. + +* Have Daniel's read-tree graduate from "pu" after plugging leaks. -* We still have the same issue with "git fetch". Fetching into - the branch one is on _may_ need to do the same thing as - fetching into anonymous head and then do the resolve. At - least it needs a warning. [DONE] +* Implement a merge backend using Daniel's read-tree. -* "git commit -m" should work for initial commits and perhaps - merge commits as well. Warning about merge is still a good - thing to do, while -m is useful in scripted non-interactive - use, so we need to be careful. [DONE] +* Accept Fredrik merge after renaming it (I want to name the + driver 'git merge'). Suggest where to place *.py stuff -- + probably in $(share)/git-core/ and add Makefile entry for + installation. * Encourage concrete proposals to commit log message templates we discussed some time ago. -* Test apply.c patches from Robert Fitzsmons and have them - graduate to "master" branch [IN PROGRESS]. - -* Test read-tree reorganization patches from Daniel and have - them graduate to "master" branch [TESTED]. - -* Bug Ryan and work with him to update send-email easier to use. - [Ryan's patch pushed into "master". Will see how well it is - accepted.] +* Bug Martin for archimport script documentation. -* Look at portability fixes from Jason Riedy - - http://www.cs.berkeley.edu/~ejr/gits/git.git#portable - - [Applied. Burned by one of them and backed out, but otherwise - looks OK.] +* More portability. I dropped a SunOS patch on the floor by + somebody. * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -130,9 +98,6 @@ Technical (milder) * Perhaps accept patches to do undo/redo. -* MIMEified applymbox to grok B and Q encodings in headers and - turn them into UTF-8; unwrap QP; explode multipart. [DONE] - * Maybe grok PGP signed text/plain in applymbox as well. * Perhaps a tool to revert a single file to pre-modification @@ -141,54 +106,27 @@ Technical (milder) the command be called? git-revert is taken so is git-checkout. -* "git cherry-pick" that applies the patch an existing commit - introduces in its ancestry chain, possibly using the 3-way - merge machinery. [DONE] - -* Update rebase using the cherry-pick command. [DONE] - -* Redo "git revert" using 3-way merge machinery. [DONE] - * A tool to detect, show and prune already merged topic branches. -* Set up an automated documentation rebuilding procedure at - kernel.org, using update hook mechanism. [DONE] - -* Describe automated documentation rebuilding in a howto form - [DONE]. - * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in git.git repository. -* Accept and apply "git repack --all" patch, except the part - that removes the existing packs. [DONE] - * Internally split the project into non-doc and doc parts; add an extra root for the doc part and merge from it; move the internal doc source to a separate repository, like the +Meta repository; experiment if this results in a reasonable workflow, and document it in howto form if it does. -* Add names to all nodes in show-branch [DONE]. - * Option to limit rename detection for more than N paths. -* Tool renames. [Discussion almost concluded, scheduled to - happen 0.99.7 with backward compatibility links, removing them - in 0.99.8.] - Technical (trivial) ------------------- -* Look at and merge Debian fixes from Tommi [Done]. - * Perhaps "git branch -d" to delete a branch. -* Remove "git clone-dumb-http" [DONE]. - * We would want test scripts for the relative directory path stuff Linus has been working on. So far, the following commands should be usable with relative directory paths: @@ -201,19 +139,9 @@ Technical (trivial) rev-list rev-parse - -Initial repository Gotchas --------------------------- - -* `git fetch foo:bar` works OK, but `git checkout bar` - afterwards does not (missing `.git/HEAD`). - -* `git commit -s` did not add signoff for initial commit [DONE]. - -* `git status` does not work well when missing `.git/HEAD` [DONE]. - -* `git log` either; git-log-script uses die which does not exist - [DONE]. +* In a freashly created empty repository, `git fetch foo:bar` + works OK, but `git checkout bar` afterwards does not (missing + `.git/HEAD`). Local Variables: From 28e50bdb5183ced6fd14ddb850d879f6178895be Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 7 Sep 2005 15:19:41 -0700 Subject: [PATCH 0017/2612] Describe tool renames plan. Signed-off-by: Junio C Hamano --- TODO | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 04a4d17d46882d..f94b49b549eed4 100644 --- a/TODO +++ b/TODO @@ -4,7 +4,54 @@ What to expect after 0.99.6 This is written in a form of to-do list for me, so if I say "accept patch", it means I do not currently plan to do that myself. People interested in seeing it materialize please take -a hint. +a hint. The latest copy of this document is found at + + http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO + +Tool Renames Plan +----------------- + + - All non-binary commands will lose -script suffix in + $(bindir). The source to git-foo will be either git-foo.sh + or git-foo.perl in the source tree, and the documentation + will be in Documentation/git-foo.txt. + + - The commands whose names have 'cache' to mean 'index file' + will get 'cache' in their names replaced with 'index'. For + git-fsck-cache and git-convert-cache, 'cache' will be + replaced with 'objects'. + + - The commit walkers will have 'pull' in their names replaced + with 'fetch'. 'git-ssh-push' will become 'git-ssh-upload'. + + - We continue to follow the convention to name the C source + file that contains the main program of 'git-foo' command + 'foo.c'. That means we will have 'fsck-objects.c', for + example. + + - At this moment, I am not planning to rename the symbols used + in programs, nor any library sources. "cache.h" will stay + "cache.h", so does "read-cache.c". "struct cache_entry" and + "ce_match_stat()" will keep their names. We _might_ want to + rename them in later rounds but not right now. + + - In 0.99.7, all renamed commands will have symbolic links in + $(bindir) so that old names continue to work. These backward + compatible symlinks will not be present in documentation, + though. Especially, the main documentation, git(7) will talk + about the new names. Old environment names defined in + gitenv() will also be removed in this release. + + Tentatively we aim to do this on Sep 17th. + + - In 0.99.8, we do not install these backward compatible + symbolic links in $(bindir) anymore. The Makefile will have + a target to remove old symlinks from $(DESTDIR)$(bindir) you + can run manually to help you clean things up. + + The timeframe for this is around Oct 1st, but I could be + talked into delaying the symlink removal if Porcelain people + find this schedule too tight. Documentation From a5043158ea8f6d17c127c5f4a2ec0c67464e8301 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 8 Sep 2005 00:14:31 -0700 Subject: [PATCH 0018/2612] Updates 2005-09-08 early morning. Signed-off-by: Junio C Hamano --- TODO | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index f94b49b549eed4..e0ee7582c0bc52 100644 --- a/TODO +++ b/TODO @@ -107,10 +107,7 @@ Technical (heavier) idea, making the set of packs in repositories everybody has different from each other. -* Maybe a pack optimizer. I am not convinced that packing all - objects into a single pack and removing all the existing panck - is the right way to go, since that would work against people - who already have those packs. +* Maybe a pack optimizer. * Maybe an Emacs VC backend. @@ -118,7 +115,7 @@ Technical (heavier) Technical (milder) ------------------ -* Tool renames [STARTED]. +* Tool renames. Give fixup patch for at least Cogito and StGIT. * Have Daniel's read-tree graduate from "pu" after plugging leaks. @@ -134,8 +131,7 @@ Technical (milder) * Bug Martin for archimport script documentation. -* More portability. I dropped a SunOS patch on the floor by - somebody. +* More portability. * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -156,6 +152,8 @@ Technical (milder) * A tool to detect, show and prune already merged topic branches. +* "Lost and Found". + * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in git.git repository. @@ -178,13 +176,13 @@ Technical (trivial) stuff Linus has been working on. So far, the following commands should be usable with relative directory paths: - update-cache - ls-files - diff-files - diff-cache - diff-tree - rev-list - rev-parse + git-update-index + git-ls-files + git-diff-files + git-diff-index + git-diff-tree + git-rev-list + git-rev-parse * In a freashly created empty repository, `git fetch foo:bar` works OK, but `git checkout bar` afterwards does not (missing From 2d2abeeca332a413bbd828a29ac4db9411078855 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 8 Sep 2005 19:09:13 -0700 Subject: [PATCH 0019/2612] Updates 2005-09-08 evening. Signed-off-by: Junio C Hamano --- TODO | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index e0ee7582c0bc52..21e26859289ab1 100644 --- a/TODO +++ b/TODO @@ -98,7 +98,8 @@ Technical (heavier) * To make it easier to experiment with different merge strategies, make git-merge driver that will run merge backends - for the best merge [Outlined the idea; just do it]. + for the best merge [Illustration of concept patch sent out, + untested yet]. * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -116,6 +117,9 @@ Technical (milder) ------------------ * Tool renames. Give fixup patch for at least Cogito and StGIT. + [As of this writing 2005-09-08 evening US/Pacific, the + "master" has what should go in 0.99.7 except gitenv() removal]. + * Have Daniel's read-tree graduate from "pu" after plugging leaks. @@ -141,6 +145,9 @@ Technical (milder) * Perhaps accept patches to do undo/redo. +* Perhaps accept patch to optionally allow '--fuzz' in + 'git-apply'. + * Maybe grok PGP signed text/plain in applymbox as well. * Perhaps a tool to revert a single file to pre-modification @@ -152,7 +159,14 @@ Technical (milder) * A tool to detect, show and prune already merged topic branches. -* "Lost and Found". +* "Lost and Found"; find the minimum number of dangling commits + from the fsck-objects output to make everybody not dangling, + and link them under $GIT_DIR/refs/lost-found/. Then + show-branch or gitk can be used to find any lost commit. + + Do not name it /lost+found/; that would probably confuse + things that incorrectly assumes that is a mount point (not our + code but somebody else's). * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in From 7bd5db67c1e3c95a4b15117b030e3dae05fb5148 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 8 Sep 2005 19:12:30 -0700 Subject: [PATCH 0020/2612] Updates 2005-09-08 evening. Signed-off-by: Junio C Hamano --- TODO | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TODO b/TODO index 21e26859289ab1..cd6c5b8e883620 100644 --- a/TODO +++ b/TODO @@ -180,6 +180,11 @@ Technical (milder) * Option to limit rename detection for more than N paths. +* Make rebase restartable; instead of skipping what cannot be + automatically forward ported, leave the conflicts in the work + tree, have the user resolve it, and then restart from where it + left off. + Technical (trivial) ------------------- From f237cd9bae1e83a9848b3ef3b2112b75f52a2535 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 9 Sep 2005 18:46:21 -0700 Subject: [PATCH 0021/2612] Update 2005-09-09 evening. Signed-off-by: Junio C Hamano --- TODO | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index cd6c5b8e883620..80e197e49181cb 100644 --- a/TODO +++ b/TODO @@ -62,7 +62,7 @@ Documentation Link the documentation from the main git.txt page. * Accept patches from people who were hit by shiny blue bat to - update the SubmittingPatches [ONGOING]. + update the SubmittingPatches. * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not @@ -98,8 +98,7 @@ Technical (heavier) * To make it easier to experiment with different merge strategies, make git-merge driver that will run merge backends - for the best merge [Illustration of concept patch sent out, - untested yet]. + for the best merge [tested and in proposed updates]. * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -117,13 +116,18 @@ Technical (milder) ------------------ * Tool renames. Give fixup patch for at least Cogito and StGIT. - [As of this writing 2005-09-08 evening US/Pacific, the - "master" has what should go in 0.99.7 except gitenv() removal]. - + [As of 2005-09-09 evening US/Pacific, the "master" branch has + what should go in 0.99.7 including gitenv() removal]. * Have Daniel's read-tree graduate from "pu" after plugging leaks. -* Implement a merge backend using Daniel's read-tree. +* Implement a merge backend using Daniel's read-tree [DONE]. + +* Rename 'git-merge-resolve' to 'git-merge-stupid' and + 'git-merge-multibase' to 'git-merge-resolve'; the former is + for historical curiosity and comparison purposes only and not + to be used in real applications so remove it from the default + strategies list [DONE]. * Accept Fredrik merge after renaming it (I want to name the driver 'git merge'). Suggest where to place *.py stuff -- @@ -159,14 +163,13 @@ Technical (milder) * A tool to detect, show and prune already merged topic branches. -* "Lost and Found"; find the minimum number of dangling commits - from the fsck-objects output to make everybody not dangling, - and link them under $GIT_DIR/refs/lost-found/. Then - show-branch or gitk can be used to find any lost commit. +* "Lost and Found"; link dangling commits found by fsck-objects + under $GIT_DIR/refs/lost-found/. Then show-branch or gitk can + be used to find any lost commit. Do not name it /lost+found/; that would probably confuse - things that incorrectly assumes that is a mount point (not our - code but somebody else's). + things that mistake it a mount point (not our code but + somebody else's). * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in @@ -180,16 +183,27 @@ Technical (milder) * Option to limit rename detection for more than N paths. +* Marking copy seems to be broken when A,B => B,C rename + happens; we incorrectly say B stays, which makes the new B + copy of old A, not rename. + * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work tree, have the user resolve it, and then restart from where it left off. +* Output full path in the "git-rev-list --objects" output, not + just the basename, and see the improved clustering results in + better packing. + Technical (trivial) ------------------- -* Perhaps "git branch -d" to delete a branch. +* Perhaps "git branch -d" to delete a branch. We probably need + some way to say "delete this branch because everything in this + should be merged in the master branch" and refuse the removal + if it is not true. * We would want test scripts for the relative directory path stuff Linus has been working on. So far, the following From bcfcd1c3d21e333a048bbb6f629601f53e384cae Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 10 Sep 2005 15:28:28 -0700 Subject: [PATCH 0022/2612] Update 2005-09-10 afternoon. Signed-off-by: Junio C Hamano --- TODO | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 80e197e49181cb..0b26441e264b2a 100644 --- a/TODO +++ b/TODO @@ -185,7 +185,7 @@ Technical (milder) * Marking copy seems to be broken when A,B => B,C rename happens; we incorrectly say B stays, which makes the new B - copy of old A, not rename. + copy of old A, not rename [DONE]. * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work @@ -200,6 +200,9 @@ Technical (milder) Technical (trivial) ------------------- +* Make 'git bisect' easier to use by logging the earlier + good/bad choices and make it replayable [DONE]. + * Perhaps "git branch -d" to delete a branch. We probably need some way to say "delete this branch because everything in this should be merged in the master branch" and refuse the removal From d30a8038bcd5f4d478f75f9f3a7ff01d152d00c6 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 11 Sep 2005 22:13:44 -0700 Subject: [PATCH 0023/2612] Updates 2005-09-11. Signed-off-by: Junio C Hamano --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 0b26441e264b2a..85494f9f578001 100644 --- a/TODO +++ b/TODO @@ -200,6 +200,8 @@ Technical (milder) Technical (trivial) ------------------- +* Teach 'git format-patch' about 'git cherry' [DONE]. + * Make 'git bisect' easier to use by logging the earlier good/bad choices and make it replayable [DONE]. From d32bbc4f151fa7ba2f4b0722abedcbe7e3e2e68c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 11 Sep 2005 23:57:34 -0700 Subject: [PATCH 0024/2612] Update 2005-09-11 late night. Signed-off-by: Junio C Hamano --- TODO | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index 85494f9f578001..3a31494f2fe526 100644 --- a/TODO +++ b/TODO @@ -84,8 +84,7 @@ Technical (heavier) * Tony Luck reported an unfortunate glitch in the 3-way merge. Encourage discussions to come up with a not-so-expensive way to catch the kind of ambiguities that led to his misery. - [Daniel's patch looks quite promising, so is the one from - Fredrik.] + [Deathmatch between Daniel's and Fredrik's ongoing.] * HPA has two projects, klibc and klibc-kbuild, that have large set of overlapping files in different paths (i.e. one has many @@ -98,7 +97,7 @@ Technical (heavier) * To make it easier to experiment with different merge strategies, make git-merge driver that will run merge backends - for the best merge [tested and in proposed updates]. + for the best merge [DONE]. * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -119,7 +118,8 @@ Technical (milder) [As of 2005-09-09 evening US/Pacific, the "master" branch has what should go in 0.99.7 including gitenv() removal]. -* Have Daniel's read-tree graduate from "pu" after plugging leaks. +* Have Daniel's read-tree graduate from "pu" after plugging + leaks [DONE]. * Implement a merge backend using Daniel's read-tree [DONE]. @@ -132,14 +132,14 @@ Technical (milder) * Accept Fredrik merge after renaming it (I want to name the driver 'git merge'). Suggest where to place *.py stuff -- probably in $(share)/git-core/ and add Makefile entry for - installation. + installation [DONE]. * Encourage concrete proposals to commit log message templates we discussed some time ago. -* Bug Martin for archimport script documentation. +* Bug Martin for archimport script documentation [DONE]. -* More portability. +* More portability [IN PROGRESS]. * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -194,7 +194,7 @@ Technical (milder) * Output full path in the "git-rev-list --objects" output, not just the basename, and see the improved clustering results in - better packing. + better packing [Tried, but did not work out well]. Technical (trivial) From 5486933ce2f48f4097910767069ca117f194484f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 12 Sep 2005 19:03:16 -0700 Subject: [PATCH 0025/2612] Update 2005-09-12 evening. Signed-off-by: Junio C Hamano --- TODO | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 3a31494f2fe526..48832af3e9cb05 100644 --- a/TODO +++ b/TODO @@ -114,9 +114,14 @@ Technical (heavier) Technical (milder) ------------------ -* Tool renames. Give fixup patch for at least Cogito and StGIT. - [As of 2005-09-09 evening US/Pacific, the "master" branch has - what should go in 0.99.7 including gitenv() removal]. +* Define semantics for relative pathnames in + objects/info/alternates. Either relative to 'objects', or + relative to the parent directory of .git/ (the latter is + consistent with GIT_ALTERNATE_OBJECT_DIRECTORIES). Perhaps + would end up doing the former. + +* Tool renames. Give fixup patch for at least Cogito and StGIT + [DONE]. * Have Daniel's read-tree graduate from "pu" after plugging leaks [DONE]. @@ -200,6 +205,8 @@ Technical (milder) Technical (trivial) ------------------- +* Deal with CDPATH. + * Teach 'git format-patch' about 'git cherry' [DONE]. * Make 'git bisect' easier to use by logging the earlier From ea6ce1068109f833b6c5f3127cf6ffd2d4d9f62a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Sep 2005 00:27:40 -0700 Subject: [PATCH 0026/2612] Updates 2005-09-13 Signed-off-by: Junio C Hamano --- TODO | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 48832af3e9cb05..316ef8c60aa920 100644 --- a/TODO +++ b/TODO @@ -114,11 +114,12 @@ Technical (heavier) Technical (milder) ------------------ -* Define semantics for relative pathnames in - objects/info/alternates. Either relative to 'objects', or - relative to the parent directory of .git/ (the latter is - consistent with GIT_ALTERNATE_OBJECT_DIRECTORIES). Perhaps - would end up doing the former. +* Define semantics for relative pathnames in objects/info/alternates. + Either relative to 'objects', or relative to the top of project tree + ;the latter is consistent with GIT_ALTERNATE_OBJECT_DIRECTORIES. + Perhaps would end up doing the former because we would want to be + consistent between a naked repository and a repository with working + tree [RFC-PATCH issued]. * Tool renames. Give fixup patch for at least Cogito and StGIT [DONE]. @@ -205,7 +206,7 @@ Technical (milder) Technical (trivial) ------------------- -* Deal with CDPATH. +* Deal with CDPATH [DONE]. * Teach 'git format-patch' about 'git cherry' [DONE]. From e30ca3526d9215bc04b06eabffe9852357249e1f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 14 Sep 2005 00:37:08 -0700 Subject: [PATCH 0027/2612] Update 2005-09-14 Signed-off-by: Junio C Hamano --- TODO | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO b/TODO index 316ef8c60aa920..aac9fd13fcfac4 100644 --- a/TODO +++ b/TODO @@ -119,7 +119,7 @@ Technical (milder) ;the latter is consistent with GIT_ALTERNATE_OBJECT_DIRECTORIES. Perhaps would end up doing the former because we would want to be consistent between a naked repository and a repository with working - tree [RFC-PATCH issued]. + tree [DONE]. * Tool renames. Give fixup patch for at least Cogito and StGIT [DONE]. From 5a2a128abe10d6e4ddc492394ca625778f425a65 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 14 Sep 2005 16:48:14 -0700 Subject: [PATCH 0028/2612] Updates 2005-09-14 afternoon. Signed-off-by: Junio C Hamano --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index aac9fd13fcfac4..f8b7e0e80661a0 100644 --- a/TODO +++ b/TODO @@ -99,6 +99,9 @@ Technical (heavier) strategies, make git-merge driver that will run merge backends for the best merge [DONE]. +* Sort out the mess objects/info/alternates introduces on the + client end. Both rsync and commit walkers are broken. + * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. We would need a tool to generate an idx file out of a pack From 341e78f70ce4a06cf5152072f55c1577a215fda7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 15 Sep 2005 11:50:48 -0700 Subject: [PATCH 0029/2612] Updates 2005-09-15 Signed-off-by: Junio C Hamano --- TODO | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index f8b7e0e80661a0..fd24a9b3af1094 100644 --- a/TODO +++ b/TODO @@ -100,7 +100,9 @@ Technical (heavier) for the best merge [DONE]. * Sort out the mess objects/info/alternates introduces on the - client end. Both rsync and commit walkers are broken. + client end. Both rsync and commit walkers are broken + [Daniel already started some, need to describe the current + situation first.] * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -127,6 +129,9 @@ Technical (milder) * Tool renames. Give fixup patch for at least Cogito and StGIT [DONE]. +* Massage ssh-fetch and ssh-upload to be more backward + compatible. + * Have Daniel's read-tree graduate from "pu" after plugging leaks [DONE]. @@ -170,7 +175,8 @@ Technical (milder) git-checkout. * A tool to detect, show and prune already merged topic - branches. + branches [DONE; 'branch -d' to prune; users can do gitk for + deciding]. * "Lost and Found"; link dangling commits found by fsck-objects under $GIT_DIR/refs/lost-found/. Then show-branch or gitk can @@ -192,6 +198,9 @@ Technical (milder) * Option to limit rename detection for more than N paths. +* diffcore-rename leak reintroduced because the 'fix' was + broken. Need to take a look into this. + * Marking copy seems to be broken when A,B => B,C rename happens; we incorrectly say B stays, which makes the new B copy of old A, not rename [DONE]. @@ -219,7 +228,7 @@ Technical (trivial) * Perhaps "git branch -d" to delete a branch. We probably need some way to say "delete this branch because everything in this should be merged in the master branch" and refuse the removal - if it is not true. + if it is not true [DONE]. * We would want test scripts for the relative directory path stuff Linus has been working on. So far, the following From cb816a72108fb898dd2bf9aeac973d883ee6ef80 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 15 Sep 2005 16:57:35 -0700 Subject: [PATCH 0030/2612] Update 2005-09-15 afternoon. --- TODO | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index fd24a9b3af1094..fe18dd31abdf9f 100644 --- a/TODO +++ b/TODO @@ -100,9 +100,10 @@ Technical (heavier) for the best merge [DONE]. * Sort out the mess objects/info/alternates introduces on the - client end. Both rsync and commit walkers are broken - [Daniel already started some, need to describe the current - situation first.] + client end. Both rsync and commit walkers are broken. + * describe current situation [DONE] + * http [Daniel started] + * rsync * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. @@ -199,7 +200,7 @@ Technical (milder) * Option to limit rename detection for more than N paths. * diffcore-rename leak reintroduced because the 'fix' was - broken. Need to take a look into this. + broken [DONE]. * Marking copy seems to be broken when A,B => B,C rename happens; we incorrectly say B stays, which makes the new B @@ -214,10 +215,18 @@ Technical (milder) just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. +* Allow 'git apply' to accept GNU diff 2.7 output that forgets + to say '\No newline' if both input ends with incomplete + lines. + Technical (trivial) ------------------- +* Add simple globbing rules for git-show-branch so that I can + say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and + ko-rc are in refs/tags/). + * Deal with CDPATH [DONE]. * Teach 'git format-patch' about 'git cherry' [DONE]. From 11d56b155cc478fa4708d457d9c8e50bb0f39fe9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 18 Sep 2005 10:46:33 -0700 Subject: [PATCH 0031/2612] Really prepare for 0.99.7 Signed-off-by: Junio C Hamano --- HAVEDONE | 104 +++++++++++++++++++++++++++++++++++++++++ TODO | 138 ++++++++++++++++++++----------------------------------- 2 files changed, 154 insertions(+), 88 deletions(-) create mode 100644 HAVEDONE diff --git a/HAVEDONE b/HAVEDONE new file mode 100644 index 00000000000000..aeccb1281156ad --- /dev/null +++ b/HAVEDONE @@ -0,0 +1,104 @@ +Done in 0.99.7 +============== + +Organization +~~~~~~~~~~~~ + +Some commands and most scripts are renamed for consistency. + + - We have an official standard terminology list [*1*]. To + match this, commands that operate on index files now have + 'index' instead of 'cache' in their names, and ones that + download are called 'fetch' instead of 'pull'. + + - We used to install most of the commands that happen to be + implemented as scripts as 'git-*-script', which was + cumbersome to remember and type unless you always used 'git' + wrapper. They lost '-script' suffix from their names. + +For now, we install synonyms as symbolic links so that old +names continue to work, but they are planned to be removed in +0.99.8 (or later if there are enough objections on the list -- +so far I have heard none). + +Also ancient environment variables [*2*] are not supported +anymore. + + +New Features and Commands +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Downloaders that are not fully git aware have been taught about +the mechanism to borrow objects from other repositories via +objects/info/alternates the server side may be using. 'git +fetch' and 'git pull' commands over rsync and http transport +should be able to handle such repositories [*3*]. + +People found interesting cases where the 'stupid' three-way +merge mechanism does the wrong thing without noticing. We have +two new merge algorithms by Daniel and Fredrik that attempt to +do better in such cases. A new 'git merge' command has been +introduced to make it easier to experiment with and choose among +different merge strategies. Note that 'git pull' still uses the +traditional three-way merge after downloading, but it is +expected to be switched to use 'git merge' sometime in the +future. + +Importing from tla archives has been improved and documentated. + +'git branch' command acquired '-d' flag to delete a branch that +has already been merged into the current branch. + +'git bisect' command is easier to use by logging the earlier +good/bad choices and make it replayable. + +'git repack' has -a' flag to pack the whole repository into a +single pack. + +'git grep' is a new command to run grep on files 'git' knows +about. + + +Fixes +~~~~~ + +* 'git-diff-*' commands used to mark copy/rename incorrectly + when an (A,B) => (B,C) rename was made. We said the new B is + a copy of old A, not a rename of old A. + +* When the user exported CDPATH into environment, 'cd' took + scripts to unexpected places. Unset it upfront to guard us. + +* 'git format-patch' knows about 'git cherry' and skips patches + already merged upstream. + +* hopefully plugged memory leak in diffcore-rename properly. + +* commit walkers incorrectly assumed having a commit means we + have the whole history leading up to it -- which is not true + if the previous download was interrupted. As a safety + measure, we now only trust the commits that are pointed by the + existing refs. + +* 'git rev-list' uses a lot less memory. + +* The build should be a bit friendlier to Solaris and Darwin now. + +* 'git ssh-{push,pull}' are friendlier to tcsh. + +* http transport is nicer to caching proxies. + +* 'git daemon' port is registered with IANA. + +* Many documentation updates. + + +[Footnotes] +*1* http://www.kernel.org/pub/software/scm/git/docs/glossary.html + +*2* Ancient environment variable names: SHA1_FILE_DIRECTORIES +AUTHOR_DATE AUTHOR_EMAIL AUTHOR_NAME COMMIT_AUTHOR_EMAIL +COMMIT_AUTHOR_NAME SHA1_FILE_DIRECTORY + +*3* But not grafts. + diff --git a/TODO b/TODO index fe18dd31abdf9f..6e5409c17976f1 100644 --- a/TODO +++ b/TODO @@ -1,15 +1,13 @@ -What to expect after 0.99.6 -=========================== +The GIT To-Do File +================== -This is written in a form of to-do list for me, so if I say -"accept patch", it means I do not currently plan to do that -myself. People interested in seeing it materialize please take -a hint. The latest copy of this document is found at + The latest copy of this document is found at http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO + Tool Renames Plan ------------------ +================= - All non-binary commands will lose -script suffix in $(bindir). The source to git-foo will be either git-foo.sh @@ -37,12 +35,10 @@ Tool Renames Plan - In 0.99.7, all renamed commands will have symbolic links in $(bindir) so that old names continue to work. These backward - compatible symlinks will not be present in documentation, - though. Especially, the main documentation, git(7) will talk - about the new names. Old environment names defined in - gitenv() will also be removed in this release. - - Tentatively we aim to do this on Sep 17th. + compatible names will not appear in documentation. The main + documentation, git(7) will talk about the new names but would + mention their old names as historical notes. Old environment + names defined in gitenv() will also be removed in this release. - In 0.99.8, we do not install these backward compatible symbolic links in $(bindir) anymore. The Makefile will have @@ -54,6 +50,15 @@ Tool Renames Plan find this schedule too tight. +What to expect after 0.99.7 +=========================== + +This is written in a form of to-do list for me, so if I say +"accept patch", it means I do not currently plan to do that +myself. People interested in seeing it materialize please take +a hint. + + Documentation ------------- @@ -95,16 +100,6 @@ Technical (heavier) me, and Daniel outlined a smarter merge strategy for this. Try them out. -* To make it easier to experiment with different merge - strategies, make git-merge driver that will run merge backends - for the best merge [DONE]. - -* Sort out the mess objects/info/alternates introduces on the - client end. Both rsync and commit walkers are broken. - * describe current situation [DONE] - * http [Daniel started] - * rsync - * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. We would need a tool to generate an idx file out of a pack @@ -112,6 +107,10 @@ Technical (heavier) idea, making the set of packs in repositories everybody has different from each other. +* Libification. There are many places "run once" mentality is + ingrained in the management of basic data structures, which + need to be fixed. + * Maybe a pack optimizer. * Maybe an Emacs VC backend. @@ -120,41 +119,18 @@ Technical (heavier) Technical (milder) ------------------ -* Define semantics for relative pathnames in objects/info/alternates. - Either relative to 'objects', or relative to the top of project tree - ;the latter is consistent with GIT_ALTERNATE_OBJECT_DIRECTORIES. - Perhaps would end up doing the former because we would want to be - consistent between a naked repository and a repository with working - tree [DONE]. - -* Tool renames. Give fixup patch for at least Cogito and StGIT - [DONE]. - -* Massage ssh-fetch and ssh-upload to be more backward - compatible. - -* Have Daniel's read-tree graduate from "pu" after plugging - leaks [DONE]. - -* Implement a merge backend using Daniel's read-tree [DONE]. - -* Rename 'git-merge-resolve' to 'git-merge-stupid' and - 'git-merge-multibase' to 'git-merge-resolve'; the former is - for historical curiosity and comparison purposes only and not - to be used in real applications so remove it from the default - strategies list [DONE]. - -* Accept Fredrik merge after renaming it (I want to name the - driver 'git merge'). Suggest where to place *.py stuff -- - probably in $(share)/git-core/ and add Makefile entry for - installation [DONE]. +* The recent commit walker safety patch may be too cautious and + appears to take forever when cloning. This may even be + infinitely looping in the code lifted from the old rev-list -- + needs to be taken a look at [DONE INITIAL CUT]. * Encourage concrete proposals to commit log message templates we discussed some time ago. -* Bug Martin for archimport script documentation [DONE]. +* Accept patches for more portability. -* More portability [IN PROGRESS]. + * strcasestr() in mailinfo. We may need compat/strcasestr.c; + this is bugging OpenBSD folks. * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -167,6 +143,10 @@ Technical (milder) * Perhaps accept patch to optionally allow '--fuzz' in 'git-apply'. +* Allow 'git apply' to accept GNU diff 2.7 output that forgets + to say '\No newline' if both input ends with incomplete + lines. + * Maybe grok PGP signed text/plain in applymbox as well. * Perhaps a tool to revert a single file to pre-modification @@ -175,18 +155,6 @@ Technical (milder) the command be called? git-revert is taken so is git-checkout. -* A tool to detect, show and prune already merged topic - branches [DONE; 'branch -d' to prune; users can do gitk for - deciding]. - -* "Lost and Found"; link dangling commits found by fsck-objects - under $GIT_DIR/refs/lost-found/. Then show-branch or gitk can - be used to find any lost commit. - - Do not name it /lost+found/; that would probably confuse - things that mistake it a mount point (not our code but - somebody else's). - * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in git.git repository. @@ -197,15 +165,6 @@ Technical (milder) repository; experiment if this results in a reasonable workflow, and document it in howto form if it does. -* Option to limit rename detection for more than N paths. - -* diffcore-rename leak reintroduced because the 'fix' was - broken [DONE]. - -* Marking copy seems to be broken when A,B => B,C rename - happens; we incorrectly say B stays, which makes the new B - copy of old A, not rename [DONE]. - * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work tree, have the user resolve it, and then restart from where it @@ -215,29 +174,32 @@ Technical (milder) just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. -* Allow 'git apply' to accept GNU diff 2.7 output that forgets - to say '\No newline' if both input ends with incomplete - lines. +* Remove obsolete commands [READY]. + +* Option to limit rename detection for more than N paths [READY]. + +* Option to show only status and name from diff [READY]. Technical (trivial) ------------------- -* Add simple globbing rules for git-show-branch so that I can - say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and - ko-rc are in refs/tags/). +* 'git add --recursive'? -* Deal with CDPATH [DONE]. +* 'git merge-projects'? -* Teach 'git format-patch' about 'git cherry' [DONE]. +* 'git lost-and-found'? Link dangling commits found by + fsck-objects under $GIT_DIR/refs/lost-found/. Then + show-branch or gitk can be used to find any lost commit. [A + feeler patch sent out. Very underwhelming response X-<.] -* Make 'git bisect' easier to use by logging the earlier - good/bad choices and make it replayable [DONE]. + Do not name it /lost+found/; that would probably confuse + things that mistake it a mount point (not our code but + somebody else's). -* Perhaps "git branch -d" to delete a branch. We probably need - some way to say "delete this branch because everything in this - should be merged in the master branch" and refuse the removal - if it is not true [DONE]. +* Add simple globbing rules to git-show-branch so that I can + say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and + ko-rc are in refs/tags/). * We would want test scripts for the relative directory path stuff Linus has been working on. So far, the following From f95c3144f7b076c4e1821ad5a39fc37bf135929e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 22 Sep 2005 18:59:02 -0700 Subject: [PATCH 0032/2612] Update post 0.99.7 Signed-off-by: Junio C Hamano --- TODO | 75 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/TODO b/TODO index 6e5409c17976f1..cb73bc9822f509 100644 --- a/TODO +++ b/TODO @@ -9,45 +9,26 @@ The GIT To-Do File Tool Renames Plan ================= - - All non-binary commands will lose -script suffix in - $(bindir). The source to git-foo will be either git-foo.sh - or git-foo.perl in the source tree, and the documentation - will be in Documentation/git-foo.txt. - - - The commands whose names have 'cache' to mean 'index file' - will get 'cache' in their names replaced with 'index'. For - git-fsck-cache and git-convert-cache, 'cache' will be - replaced with 'objects'. - - - The commit walkers will have 'pull' in their names replaced - with 'fetch'. 'git-ssh-push' will become 'git-ssh-upload'. - - - We continue to follow the convention to name the C source - file that contains the main program of 'git-foo' command - 'foo.c'. That means we will have 'fsck-objects.c', for - example. - - - At this moment, I am not planning to rename the symbols used - in programs, nor any library sources. "cache.h" will stay - "cache.h", so does "read-cache.c". "struct cache_entry" and - "ce_match_stat()" will keep their names. We _might_ want to - rename them in later rounds but not right now. - - - In 0.99.7, all renamed commands will have symbolic links in + - In 0.99.7, all renamed commands have symbolic links in $(bindir) so that old names continue to work. These backward compatible names will not appear in documentation. The main documentation, git(7) will talk about the new names but would mention their old names as historical notes. Old environment names defined in gitenv() will also be removed in this release. - - In 0.99.8, we do not install these backward compatible + - In 0.99.8, we will not install these backward compatible symbolic links in $(bindir) anymore. The Makefile will have a target to remove old symlinks from $(DESTDIR)$(bindir) you can run manually to help you clean things up. - The timeframe for this is around Oct 1st, but I could be - talked into delaying the symlink removal if Porcelain people - find this schedule too tight. + As a notable exception, git-ssh-push and git-ssh-pull pair is + not going away within this timeframe, if ever. Each of these + old-name commands continues to invoke its old-name + counterpart on the other end. Updating to 0.99.8 on one end + of the connection does not requier the other end to update at + the same time. + + The timeframe for this is around Oct 1st. What to expect after 0.99.7 @@ -77,11 +58,19 @@ Documentation * Maybe update tutorial with a toy project that involves two or three developers.. +* Document octopus [Linus prodded me again; DONE]. + * Update tutorial to cover setting up repository hooks to do common tasks. * Accept patches to finish missing docs. +* Accept patches to talk about "Whoops, it broke. What's + next?". + +* Accept patches to make formatted tables in asciidoc to work + well in both html and man pages (see git-diff(1)). + Technical (heavier) ------------------- @@ -115,14 +104,24 @@ Technical (heavier) * Maybe an Emacs VC backend. +* 'git split-projects'? This requires updated 'git-rev-list' to + skip irrelevant commits. + Technical (milder) ------------------ +* Revisit 'git-merge'. It probably was a mistake to "loop to + choose the best one", since what is best is not ill defined to + begin with. This would make it a lot straightforward to + loosen the tree cleanliness requirements to the acceptable + level. + * The recent commit walker safety patch may be too cautious and appears to take forever when cloning. This may even be infinitely looping in the code lifted from the old rev-list -- - needs to be taken a look at [DONE INITIAL CUT]. + needs to be taken a look at [DONE -- and redone very nicely by + Sergey]. * Encourage concrete proposals to commit log message templates we discussed some time ago. @@ -130,7 +129,7 @@ Technical (milder) * Accept patches for more portability. * strcasestr() in mailinfo. We may need compat/strcasestr.c; - this is bugging OpenBSD folks. + this is bugging OpenBSD folks [DONE]. * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -150,10 +149,10 @@ Technical (milder) * Maybe grok PGP signed text/plain in applymbox as well. * Perhaps a tool to revert a single file to pre-modification - state? git-cat-file blob `git-ls-files | grep foo` >foo or - git-cat-file blob `git-ls-tree HEAD foo` >foo? What should - the command be called? git-revert is taken so is - git-checkout. + state? People with BK background know this operation as + 'clean'. 'git checkout [-f] ent [path...]' was suggested by + Matthias Urlichs which sounds a natural extention to what the + command currently does. * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in @@ -174,7 +173,7 @@ Technical (milder) just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. -* Remove obsolete commands [READY]. +* Remove obsolete commands [DONE]. * Option to limit rename detection for more than N paths [READY]. @@ -184,7 +183,9 @@ Technical (milder) Technical (trivial) ------------------- -* 'git add --recursive'? +* Stop installing the old-name symlinks. + +* 'git add --recursive' [DONE] * 'git merge-projects'? From 679d05fc2c6b203abdc27add03cd520c1f97dff0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 24 Sep 2005 13:41:23 -0700 Subject: [PATCH 0033/2612] Updates 2005-09-24 Signed-off-by: Junio C Hamano --- TODO | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index cb73bc9822f509..970a1afe99dbb2 100644 --- a/TODO +++ b/TODO @@ -106,6 +106,9 @@ Technical (heavier) * 'git split-projects'? This requires updated 'git-rev-list' to skip irrelevant commits. + Message-ID: + +* Look at libified GNU diff CVS seems to use. Technical (milder) @@ -129,7 +132,11 @@ Technical (milder) * Accept patches for more portability. * strcasestr() in mailinfo. We may need compat/strcasestr.c; - this is bugging OpenBSD folks [DONE]. + this is bugging OpenBSD folks [DONE, thanks to Linus and + others]. + + * Solaris portability [ONGOING, thanks to Patrick Mauritz, + Peter Eriksen and Sean from sympatico]. * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -179,10 +186,26 @@ Technical (milder) * Option to show only status and name from diff [READY]. +* What to name the 'master' version between 0.99.7 and 0.99.8 + and still not break binary distribution folks? 0.99.7z? + Technical (trivial) ------------------- +* show-branch naming heads is buggy. + + git show-branch --more=2 + ! [linus] Input: check switch bitmap when matching handlers + * [master] Input: check switch bitmap when matching handlers + -- + ++ [linus] Input: check switch bitmap when matching handlers + ++ [linus~1] Merge branch 'upstream' from master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev + ++ [linus^2] Merge /spare/repo/linux-2.6/ + + The last one should be linus~2 or something; linus head does + not have three parents! + * Stop installing the old-name symlinks. * 'git add --recursive' [DONE] From 5209db5bae24f0ab5d104f93ba979bbbe4dd966e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 25 Sep 2005 00:57:26 -0700 Subject: [PATCH 0034/2612] Update 2005-09-25 midnight. Signed-off-by: Junio C Hamano --- TODO | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index 970a1afe99dbb2..f650d2834c3204 100644 --- a/TODO +++ b/TODO @@ -118,7 +118,7 @@ Technical (milder) choose the best one", since what is best is not ill defined to begin with. This would make it a lot straightforward to loosen the tree cleanliness requirements to the acceptable - level. + level [DONE]. * The recent commit walker safety patch may be too cautious and appears to take forever when cloning. This may even be @@ -188,25 +188,15 @@ Technical (milder) * What to name the 'master' version between 0.99.7 and 0.99.8 and still not break binary distribution folks? 0.99.7z? + Pasky gave me a good one: 0.99.7.GIT [DONE] Technical (trivial) ------------------- -* show-branch naming heads is buggy. +* show-branch naming heads is buggy [FIXED]. - git show-branch --more=2 - ! [linus] Input: check switch bitmap when matching handlers - * [master] Input: check switch bitmap when matching handlers - -- - ++ [linus] Input: check switch bitmap when matching handlers - ++ [linus~1] Merge branch 'upstream' from master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev - ++ [linus^2] Merge /spare/repo/linux-2.6/ - - The last one should be linus~2 or something; linus head does - not have three parents! - -* Stop installing the old-name symlinks. +* Stop installing the old-name symlinks [DONE]. * 'git add --recursive' [DONE] From 0103c36d04896d68f92b75f581fdb5cdd6c97956 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Sep 2005 16:34:34 -0700 Subject: [PATCH 0035/2612] Update 2005-09-26 afternoon. --- TODO | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index f650d2834c3204..2ed37daa6d5004 100644 --- a/TODO +++ b/TODO @@ -108,12 +108,18 @@ Technical (heavier) skip irrelevant commits. Message-ID: -* Look at libified GNU diff CVS seems to use. +* Look at libified GNU diff CVS seems to use, or libxdiff. Technical (milder) ------------------ +* Use 'git-update-ref' in the scripts. + +* Use symbolic refs in .git/HEAD. Should we do that everywhere + while honoring the symlinked HEAD in the existing repositories + for backward compatibility, or just only when 'ln -s' fails? + * Revisit 'git-merge'. It probably was a mistake to "loop to choose the best one", since what is best is not ill defined to begin with. This would make it a lot straightforward to @@ -182,26 +188,38 @@ Technical (milder) * Remove obsolete commands [DONE]. -* Option to limit rename detection for more than N paths [READY]. +* Option to limit rename detection for more than N paths [DONE]. -* Option to show only status and name from diff [READY]. +* Option to show only status and name from diff [DONE]. * What to name the 'master' version between 0.99.7 and 0.99.8 and still not break binary distribution folks? 0.99.7z? Pasky gave me a good one: 0.99.7.GIT [DONE] +* Listing more than one head on the Pull: line of .git/remotes/ + allows you to make Octopus -- is it useful? Probabaly not. + Either adopt "only the first head is used for the merge by + default if taken from .git/remotes/ file", or "list heads to + merge on a separate Merge: line" proposal. I already have the + code to do the former, so... + Technical (trivial) ------------------- -* show-branch naming heads is buggy [FIXED]. +* Usher SSL enhancements to http-fetch from Nick Hengeveld into + a shape acceptable by everybody. -* Stop installing the old-name symlinks [DONE]. +* Require tk 2.4 in the spec file. -* 'git add --recursive' [DONE] +* show-branch naming heads is buggy [DONE]. + +* Stop installing the old-name symlinks [DONE]. * 'git merge-projects'? +* 'git clone' does not check things out. Should it? + * 'git lost-and-found'? Link dangling commits found by fsck-objects under $GIT_DIR/refs/lost-found/. Then show-branch or gitk can be used to find any lost commit. [A From 6dc88cc0dcda3b6654accc15e2b949b340fa4bfd Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 29 Sep 2005 22:02:11 -0700 Subject: [PATCH 0036/2612] Update 2005-09-29 night. --- Porcelainistas | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ TODO | 12 ++++++----- 2 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 Porcelainistas diff --git a/Porcelainistas b/Porcelainistas new file mode 100644 index 00000000000000..28c297f34c3006 --- /dev/null +++ b/Porcelainistas @@ -0,0 +1,56 @@ +Message-ID: <20050927001542.GC15615@reactrix.com> +From: Nick Hengeveld +Date: Mon, 26 Sep 2005 17:15:42 -0700 + +Good point - use of environment variables is more consistent. Use of +command-line arguments is a bit more convenient in my case since I'm +driving the transfer from a perl script, but I suppose consistency is +more important... + +Message-ID: <000a01c5c2fe$71fd6200$0200a8c0@AMEER> +From: "Ameer Armaly" +Date: Mon, 26 Sep 2005 20:57:33 -0400 + +I am seriously looking at putting one together in the D language +(http://www.digitalmars.com/d) , though it doesn't actually do +anything as of yet, since I have to balance classes along with it. + + +Message-ID: <1127840572.16026.29.camel@mariano> +From: Mariano Videla +Date: Tue, 27 Sep 2005 14:02:51 -0300 + +I setup a git repository for gipy... Didn't upload any files in +sourceforge because I don't think is ready. + +http://24.232.198.9:7978/gipy.git +http://24.232.198.9:7978/cgi/gitweb.cgi + + +Message-ID: <20050928113008.GA11309@snarc.org> +From: tab@snarc.org (Vincent Hanquez) +Date: Wed, 28 Sep 2005 13:30:08 +0200 + +Well, I kinda work on one written in C using a libgit (using exec of git +executable for the moment) It doesn't do that much at the moment: +commiting, adding files, removing files. + +At some point I'ld like to have a very integrated and easy to use +porcelain, but for now that's more a learning git by practice kind of +project. + +Message-ID: +From: Matthias Urlichs +Date: Wed, 28 Sep 2005 22:22:13 +0200 + +Python integration needs either lots of fork+exec, a git rewrite in +Python, or a libgit reorganization in library-ized C. + +I'm doing the latter, but my free time is kindof limited for now. + +My library-ize branch is at + git fetch http://netz.smurf.noris.de/git/git.git libize +if anybody wants to have a look. My first goal is to get object access +working sanely (because that's what I need for my Python project). + +I haven't merged up for some time, though. diff --git a/TODO b/TODO index 2ed37daa6d5004..868044782a93ef 100644 --- a/TODO +++ b/TODO @@ -114,11 +114,12 @@ Technical (heavier) Technical (milder) ------------------ -* Use 'git-update-ref' in the scripts. +* Use 'git-update-ref' in the scripts [DONE]. * Use symbolic refs in .git/HEAD. Should we do that everywhere while honoring the symlinked HEAD in the existing repositories for backward compatibility, or just only when 'ln -s' fails? + [DONE]. * Revisit 'git-merge'. It probably was a mistake to "loop to choose the best one", since what is best is not ill defined to @@ -201,16 +202,17 @@ Technical (milder) Either adopt "only the first head is used for the merge by default if taken from .git/remotes/ file", or "list heads to merge on a separate Merge: line" proposal. I already have the - code to do the former, so... + code to do the former, so... [DONE, open for improvement + patches but not just suggestions nor complaints.] Technical (trivial) ------------------- * Usher SSL enhancements to http-fetch from Nick Hengeveld into - a shape acceptable by everybody. + a shape acceptable by everybody [DONE]. -* Require tk 2.4 in the spec file. +* Require tk 2.4 in the spec file [DONE]. * show-branch naming heads is buggy [DONE]. @@ -218,7 +220,7 @@ Technical (trivial) * 'git merge-projects'? -* 'git clone' does not check things out. Should it? +* 'git clone' does not check things out [DONE]. * 'git lost-and-found'? Link dangling commits found by fsck-objects under $GIT_DIR/refs/lost-found/. Then From 27442c64acd1f12e613a6a5c59c4d476df584160 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 2 Oct 2005 16:52:26 -0700 Subject: [PATCH 0037/2612] GIT 0.99.8 Signed-off-by: Junio C Hamano --- HAVEDONE | 106 ++++++++++++--------------------------------------- TODO | 114 +++++++++++-------------------------------------------- 2 files changed, 47 insertions(+), 173 deletions(-) diff --git a/HAVEDONE b/HAVEDONE index aeccb1281156ad..54455589cdd883 100644 --- a/HAVEDONE +++ b/HAVEDONE @@ -1,104 +1,48 @@ -Done in 0.99.7 +Done in 0.99.8 ============== -Organization -~~~~~~~~~~~~ - -Some commands and most scripts are renamed for consistency. - - - We have an official standard terminology list [*1*]. To - match this, commands that operate on index files now have - 'index' instead of 'cache' in their names, and ones that - download are called 'fetch' instead of 'pull'. - - - We used to install most of the commands that happen to be - implemented as scripts as 'git-*-script', which was - cumbersome to remember and type unless you always used 'git' - wrapper. They lost '-script' suffix from their names. - -For now, we install synonyms as symbolic links so that old -names continue to work, but they are planned to be removed in -0.99.8 (or later if there are enough objections on the list -- -so far I have heard none). - -Also ancient environment variables [*2*] are not supported -anymore. - - New Features and Commands ~~~~~~~~~~~~~~~~~~~~~~~~~ -Downloaders that are not fully git aware have been taught about -the mechanism to borrow objects from other repositories via -objects/info/alternates the server side may be using. 'git -fetch' and 'git pull' commands over rsync and http transport -should be able to handle such repositories [*3*]. +* 'git pull' now uses 'git-merge' instead of 'git-resolve', so you can + specify alternative merge strategy to use on its command line. -People found interesting cases where the 'stupid' three-way -merge mechanism does the wrong thing without noticing. We have -two new merge algorithms by Daniel and Fredrik that attempt to -do better in such cases. A new 'git merge' command has been -introduced to make it easier to experiment with and choose among -different merge strategies. Note that 'git pull' still uses the -traditional three-way merge after downloading, but it is -expected to be switched to use 'git merge' sometime in the -future. +* 'git pull -s recursive' has been taught about renaming merges, + which may deal with HPA's klibc vs klibc-kbuild situation better. -Importing from tla archives has been improved and documentated. +* Symbolic refs -- instead of using symlinks to express .git/HEAD, + you can have a regular file that stores a single line + 'ref: refs/heads/master' in it. -'git branch' command acquired '-d' flag to delete a branch that -has already been merged into the current branch. + git-update-ref is the preferred way to write into .git/HEAD, + not "echo >.git/HEAD". git-symbolic-ref is the preferred way + to check which underlying ref a symbolic ref .git/HEAD refers + to, not "readlink .git/HEAD". -'git bisect' command is easier to use by logging the earlier -good/bad choices and make it replayable. +* A couple of new diff options (-l and --name-status). -'git repack' has -a' flag to pack the whole repository into a -single pack. +* Commit walker over http acquired more SSL options. -'git grep' is a new command to run grep on files 'git' knows -about. +* 'git clone' checks out the working tree by default. Fixes ~~~~~ -* 'git-diff-*' commands used to mark copy/rename incorrectly - when an (A,B) => (B,C) rename was made. We said the new B is - a copy of old A, not a rename of old A. - -* When the user exported CDPATH into environment, 'cd' took - scripts to unexpected places. Unset it upfront to guard us. - -* 'git format-patch' knows about 'git cherry' and skips patches - already merged upstream. - -* hopefully plugged memory leak in diffcore-rename properly. - -* commit walkers incorrectly assumed having a commit means we - have the whole history leading up to it -- which is not true - if the previous download was interrupted. As a safety - measure, we now only trust the commits that are pointed by the - existing refs. - -* 'git rev-list' uses a lot less memory. - -* The build should be a bit friendlier to Solaris and Darwin now. - -* 'git ssh-{push,pull}' are friendlier to tcsh. - -* http transport is nicer to caching proxies. +* Removed unused commands (diff-helper, rev-tree, and export). -* 'git daemon' port is registered with IANA. +* Platforms with only Python 2.3 installed can use recursive merge + strategy. -* Many documentation updates. +* Octopus documented. +* Merge is more careful noticing potentially ambiguous situation. -[Footnotes] -*1* http://www.kernel.org/pub/software/scm/git/docs/glossary.html +* Git pull does not blindly do Octopus when Pull: lines in remotes + file specifies more than one remote branches. -*2* Ancient environment variable names: SHA1_FILE_DIRECTORIES -AUTHOR_DATE AUTHOR_EMAIL AUTHOR_NAME COMMIT_AUTHOR_EMAIL -COMMIT_AUTHOR_NAME SHA1_FILE_DIRECTORY +* Commit walker got safer to use after interrupted downloads. -*3* But not grafts. +* Commit walker over http can resume partial downloads. +* More portability fixes for BSD and Solaris. diff --git a/TODO b/TODO index 868044782a93ef..20dfbd09a43d37 100644 --- a/TODO +++ b/TODO @@ -9,29 +9,17 @@ The GIT To-Do File Tool Renames Plan ================= - - In 0.99.7, all renamed commands have symbolic links in - $(bindir) so that old names continue to work. These backward - compatible names will not appear in documentation. The main - documentation, git(7) will talk about the new names but would - mention their old names as historical notes. Old environment - names defined in gitenv() will also be removed in this release. + - In 0.99.8, we will still install the backward compatible + symbolic links in $(bindir). These will however be removed + before 1.0 happens. - - In 0.99.8, we will not install these backward compatible - symbolic links in $(bindir) anymore. The Makefile will have - a target to remove old symlinks from $(DESTDIR)$(bindir) you - can run manually to help you clean things up. + git-ssh-push and git-ssh-pull pair is not going away within + this timeframe, if ever. Each of these old-name commands + continues to invoke its old-name counterpart on the other + end. - As a notable exception, git-ssh-push and git-ssh-pull pair is - not going away within this timeframe, if ever. Each of these - old-name commands continues to invoke its old-name - counterpart on the other end. Updating to 0.99.8 on one end - of the connection does not requier the other end to update at - the same time. - The timeframe for this is around Oct 1st. - - -What to expect after 0.99.7 +What to expect after 0.99.8 =========================== This is written in a form of to-do list for me, so if I say @@ -47,9 +35,6 @@ Documentation migration and update the cvs-migration documentation. Link the documentation from the main git.txt page. -* Accept patches from people who were hit by shiny blue bat to - update the SubmittingPatches. - * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not need to be expanded. I personally do not think we need tool @@ -58,8 +43,6 @@ Documentation * Maybe update tutorial with a toy project that involves two or three developers.. -* Document octopus [Linus prodded me again; DONE]. - * Update tutorial to cover setting up repository hooks to do common tasks. @@ -75,20 +58,6 @@ Documentation Technical (heavier) ------------------- -* Tony Luck reported an unfortunate glitch in the 3-way merge. - Encourage discussions to come up with a not-so-expensive way - to catch the kind of ambiguities that led to his misery. - [Deathmatch between Daniel's and Fredrik's ongoing.] - -* HPA has two projects, klibc and klibc-kbuild, that have large - set of overlapping files in different paths (i.e. one has many - renames from the other). There currently is no way for git to - help keep these two trees in sync, merging criss-cross between - them. The merge logic should be able to take advantage of - rename/copy detection smarts git-diff-* family has. Linus, - me, and Daniel outlined a smarter merge strategy for this. - Try them out. - * We might want to optimize cloning with GIT native transport not to explode the pack, and store it in objects/pack instead. We would need a tool to generate an idx file out of a pack @@ -96,6 +65,14 @@ Technical (heavier) idea, making the set of packs in repositories everybody has different from each other. +* Git daemon, when deployed at kernel.org, might turn out to be + quite a burden, since it needs to generate customized packs + every time a new request comes in. It may be worthwhile to + precompute some packs for popular sets of heads downloaders + have and serve that, even if that could give more than the + client asks for in some cases. We will know about this soon + enough. + * Libification. There are many places "run once" mentality is ingrained in the management of basic data structures, which need to be fixed. @@ -114,37 +91,9 @@ Technical (heavier) Technical (milder) ------------------ -* Use 'git-update-ref' in the scripts [DONE]. - -* Use symbolic refs in .git/HEAD. Should we do that everywhere - while honoring the symlinked HEAD in the existing repositories - for backward compatibility, or just only when 'ln -s' fails? - [DONE]. - -* Revisit 'git-merge'. It probably was a mistake to "loop to - choose the best one", since what is best is not ill defined to - begin with. This would make it a lot straightforward to - loosen the tree cleanliness requirements to the acceptable - level [DONE]. - -* The recent commit walker safety patch may be too cautious and - appears to take forever when cloning. This may even be - infinitely looping in the code lifted from the old rev-list -- - needs to be taken a look at [DONE -- and redone very nicely by - Sergey]. - * Encourage concrete proposals to commit log message templates we discussed some time ago. -* Accept patches for more portability. - - * strcasestr() in mailinfo. We may need compat/strcasestr.c; - this is bugging OpenBSD folks [DONE, thanks to Linus and - others]. - - * Solaris portability [ONGOING, thanks to Patrick Mauritz, - Peter Eriksen and Sean from sympatico]. - * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. @@ -187,41 +136,22 @@ Technical (milder) just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. -* Remove obsolete commands [DONE]. - -* Option to limit rename detection for more than N paths [DONE]. - -* Option to show only status and name from diff [DONE]. - -* What to name the 'master' version between 0.99.7 and 0.99.8 - and still not break binary distribution folks? 0.99.7z? - Pasky gave me a good one: 0.99.7.GIT [DONE] - -* Listing more than one head on the Pull: line of .git/remotes/ - allows you to make Octopus -- is it useful? Probabaly not. - Either adopt "only the first head is used for the merge by - default if taken from .git/remotes/ file", or "list heads to - merge on a separate Merge: line" proposal. I already have the - code to do the former, so... [DONE, open for improvement - patches but not just suggestions nor complaints.] +* Updated git-changes-script Jeff Garzik needs [Inquiry for + external spec sent out with a quick hack. Will know if that + is what he needs soon enough]. Technical (trivial) ------------------- -* Usher SSL enhancements to http-fetch from Nick Hengeveld into - a shape acceptable by everybody [DONE]. +* short SHA1 naming is not enforcing uniqueness. Should fix. -* Require tk 2.4 in the spec file [DONE]. +* 'git repack' can be DOSed. Should fix. -* show-branch naming heads is buggy [DONE]. - -* Stop installing the old-name symlinks [DONE]. +* Stop installing the old-name symlinks [POSTPONED]. * 'git merge-projects'? -* 'git clone' does not check things out [DONE]. - * 'git lost-and-found'? Link dangling commits found by fsck-objects under $GIT_DIR/refs/lost-found/. Then show-branch or gitk can be used to find any lost commit. [A From 7b834376cd9138cd92c1cbd0fad1385c9218c20a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 2 Oct 2005 21:42:18 -0700 Subject: [PATCH 0038/2612] Update 2005-10-02. Signed-off-by: Junio C Hamano --- TODO | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 20dfbd09a43d37..164398f962f723 100644 --- a/TODO +++ b/TODO @@ -79,6 +79,14 @@ Technical (heavier) * Maybe a pack optimizer. + Given a set of objects and a set of refs (probably a handful + branch heads and point release tags), find a set of packs to + allow reasonably minimum download for all of these classes of + people: (1) somebody cloning the repository from scratch, (2) + somebody who tends to follow the master branch head reasonably + closely, (3) somebody who tends to follow only the point + releases. + * Maybe an Emacs VC backend. * 'git split-projects'? This requires updated 'git-rev-list' to @@ -127,6 +135,12 @@ Technical (milder) repository; experiment if this results in a reasonable workflow, and document it in howto form if it does. + The point is to make it possible to fork that part off to + somebody else; then I do not have to maintain Documentation + directory myself anymore, just like I simply slurp the latest + gitk from Paul and not worry about it ;-). + + * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work tree, have the user resolve it, and then restart from where it @@ -144,14 +158,19 @@ Technical (milder) Technical (trivial) ------------------- -* short SHA1 naming is not enforcing uniqueness. Should fix. +* short SHA1 naming is not enforcing uniqueness. Should fix [DONE]. -* 'git repack' can be DOSed. Should fix. +* 'git repack' can be DOSed. Should fix [DONE]. * Stop installing the old-name symlinks [POSTPONED]. * 'git merge-projects'? + Subject: Re: Merges without bases + References: <1125004228.4110.20.camel@localhost.localdomain> + Date: Thu, 25 Aug 2005 15:26:36 -0700 + Message-ID: <7vvf1tps9v.fsf@assigned-by-dhcp.cox.net> + * 'git lost-and-found'? Link dangling commits found by fsck-objects under $GIT_DIR/refs/lost-found/. Then show-branch or gitk can be used to find any lost commit. [A From 39e6a1b68fe51eb0b1edff45bdafaffa78e9b064 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 3 Oct 2005 22:44:56 -0700 Subject: [PATCH 0039/2612] Update 2005-10-03 night Signed-off-by: Junio C Hamano --- TODO | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index 164398f962f723..e301f6102b8fa8 100644 --- a/TODO +++ b/TODO @@ -25,7 +25,9 @@ What to expect after 0.99.8 This is written in a form of to-do list for me, so if I say "accept patch", it means I do not currently plan to do that myself. People interested in seeing it materialize please take -a hint. +a hint. Also whatever I marked "Perhaps" do not have to happen +if ever -- only if somebody cares enough and submits a clean +patch, perhaps ;-). Documentation @@ -75,17 +77,19 @@ Technical (heavier) * Libification. There are many places "run once" mentality is ingrained in the management of basic data structures, which - need to be fixed. + need to be fixed. [Matthias Urlichs is already working on + this: ; Post + 1.0]. * Maybe a pack optimizer. - Given a set of objects and a set of refs (probably a handful - branch heads and point release tags), find a set of packs to - allow reasonably minimum download for all of these classes of - people: (1) somebody cloning the repository from scratch, (2) - somebody who tends to follow the master branch head reasonably - closely, (3) somebody who tends to follow only the point - releases. + Given a set of objects and a set of refs (probably a handful + branch heads and point release tags), find a set of packs to + allow reasonably minimum download for all of these classes of + people: (1) somebody cloning the repository from scratch, (2) + somebody who tends to follow the master branch head reasonably + closely, (3) somebody who tends to follow only the point + releases. * Maybe an Emacs VC backend. @@ -94,6 +98,13 @@ Technical (heavier) Message-ID: * Look at libified GNU diff CVS seems to use, or libxdiff. + [Daniel has his own diff tool almost ready to start + integrating and testing; Post 1.0] + +* Accept patches to fetch multiple objects by HTTP in parallel. + [Preferably before 1.0] + +* Plug-in file-level merges [Post 1.0]. Technical (milder) @@ -105,9 +116,6 @@ Technical (milder) * Accept patches to cause "read-tree -u" delete a directory when it makes it empty. -* Perhaps accept patches to introduce the concept of "patch flow - expressed as ref mappings" Josef has been advocating about. - * Perhaps accept patches to do undo/redo. * Perhaps accept patch to optionally allow '--fuzz' in @@ -162,7 +170,7 @@ Technical (trivial) * 'git repack' can be DOSed. Should fix [DONE]. -* Stop installing the old-name symlinks [POSTPONED]. +* Stop installing the old-name symlinks [POSTPONED, but before 1.0]. * 'git merge-projects'? From b4f0dbc30405d28747b52a29cfc665748844aecb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 8 Oct 2005 13:50:04 -0700 Subject: [PATCH 0040/2612] Updates 2005-10-08 afternoon. Signed-off-by: Junio C Hamano --- TODO | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/TODO b/TODO index e301f6102b8fa8..f07aaeecc27f97 100644 --- a/TODO +++ b/TODO @@ -33,6 +33,9 @@ patch, perhaps ;-). Documentation ------------- +* Help Jon Loeliger to find place in the documentation to place + his drawing. + * Accept patches from people who actually have done CVS migration and update the cvs-migration documentation. Link the documentation from the main git.txt page. @@ -110,6 +113,22 @@ Technical (heavier) Technical (milder) ------------------ +* Review the Makefile variables and exporting rules for them, + while looking at prefix passing by Kai Ruemmler. + +* Review the 'sparce object database' change by Linus and move + the first phase of it to the "master" branch. + +* Decide on mmap(). I am inclined to just stick to mmap + replacement by Johannes Schindelin and do nothing else right + now. + +* Revisit Santi's patch to move commit temorary files out of the + working tree toplevel. More generally, review the use of + temporary files again. Assuming $GIT_DIR is writable is + more acceptable, but the working tree toplevel may not be in + a rare usage pattern. + * Encourage concrete proposals to commit log message templates we discussed some time ago. @@ -125,6 +144,9 @@ Technical (milder) to say '\No newline' if both input ends with incomplete lines. +* What to do with TABs and LFs in pathnames without breaking GNU + patch? + * Maybe grok PGP signed text/plain in applymbox as well. * Perhaps a tool to revert a single file to pre-modification From fd2b323def3ad40b0e85105321d06bad3ff36d58 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 8 Oct 2005 13:54:37 -0700 Subject: [PATCH 0041/2612] Updates 2005-10-08 afternoon. Signed-off-by: Junio C Hamano --- TODO | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index f07aaeecc27f97..73a4cf356e40e6 100644 --- a/TODO +++ b/TODO @@ -129,6 +129,14 @@ Technical (milder) more acceptable, but the working tree toplevel may not be in a rare usage pattern. +* Perhaps accept more "want"s in upload-pack and do something + intelligent about it. + +* Perhaps detect cloning request in upload-pack and cache the + result for next cloning request until any of our refs change. + +* Perhaps send less "want"s from fetch-pack. + * Encourage concrete proposals to commit log message templates we discussed some time ago. @@ -170,7 +178,6 @@ Technical (milder) directory myself anymore, just like I simply slurp the latest gitk from Paul and not worry about it ;-). - * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work tree, have the user resolve it, and then restart from where it From e869b68936c81b134eb21ba60d98072e8375a71f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 9 Oct 2005 01:06:35 -0700 Subject: [PATCH 0042/2612] Updates 2005-10-09 wee. Signed-off-by: Junio C Hamano --- TODO | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/TODO b/TODO index 73a4cf356e40e6..9184d1620cce1d 100644 --- a/TODO +++ b/TODO @@ -109,25 +109,28 @@ Technical (heavier) * Plug-in file-level merges [Post 1.0]. +* Per-repository configuration mechanism. + Technical (milder) ------------------ * Review the Makefile variables and exporting rules for them, - while looking at prefix passing by Kai Ruemmler. + while looking at prefix passing by Kai Ruemmler [DONE]. * Review the 'sparce object database' change by Linus and move - the first phase of it to the "master" branch. + the first phase of it to the "master" branch [DONE]. * Decide on mmap(). I am inclined to just stick to mmap replacement by Johannes Schindelin and do nothing else right - now. + now, except perhaps drop the writing-back support [DONE]. * Revisit Santi's patch to move commit temorary files out of the - working tree toplevel. More generally, review the use of - temporary files again. Assuming $GIT_DIR is writable is - more acceptable, but the working tree toplevel may not be in - a rare usage pattern. + working tree toplevel [DONE]. + +* More generally, review the use of temporary files again. + Assuming $GIT_DIR is writable is more acceptable, but the + working tree toplevel may not be in a rare usage pattern. * Perhaps accept more "want"s in upload-pack and do something intelligent about it. @@ -191,6 +194,8 @@ Technical (milder) external spec sent out with a quick hack. Will know if that is what he needs soon enough]. +* An mechanism to ignore filesystem mode bits altogether. + Technical (trivial) ------------------- From cebdf4601730abec1a5e188417dab05ca8ce62a7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 10 Oct 2005 02:00:39 -0700 Subject: [PATCH 0043/2612] Updates 2005-10-10 Signed-off-by: Junio C Hamano --- TODO | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 9184d1620cce1d..7c7f46df94efe5 100644 --- a/TODO +++ b/TODO @@ -105,7 +105,7 @@ Technical (heavier) integrating and testing; Post 1.0] * Accept patches to fetch multiple objects by HTTP in parallel. - [Preferably before 1.0] + [DONE] * Plug-in file-level merges [Post 1.0]. @@ -115,6 +115,10 @@ Technical (heavier) Technical (milder) ------------------ +* Funny tag names and curl library. + + curl 'http://locke.catalyst.net.nz/git/moodle.git/refs/tags/MOODLE_15_MERGED **INVALID**' + * Review the Makefile variables and exporting rules for them, while looking at prefix passing by Kai Ruemmler [DONE]. @@ -129,7 +133,7 @@ Technical (milder) working tree toplevel [DONE]. * More generally, review the use of temporary files again. - Assuming $GIT_DIR is writable is more acceptable, but the + Assuming writable $GIT_DIR is more acceptable, but the working tree toplevel may not be in a rare usage pattern. * Perhaps accept more "want"s in upload-pack and do something @@ -156,7 +160,7 @@ Technical (milder) lines. * What to do with TABs and LFs in pathnames without breaking GNU - patch? + patch? [Discussion started.] * Maybe grok PGP signed text/plain in applymbox as well. From f73e9705a0025835ed61a209b06d2411898659c4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 11 Oct 2005 16:33:08 -0700 Subject: [PATCH 0044/2612] Updates 2005-10-11 afternoon. Signed-off-by: Junio C Hamano --- TODO | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/TODO b/TODO index 7c7f46df94efe5..d5d8c486c14d27 100644 --- a/TODO +++ b/TODO @@ -109,7 +109,7 @@ Technical (heavier) * Plug-in file-level merges [Post 1.0]. -* Per-repository configuration mechanism. +* Per-repository configuration mechanism [DONE by Linus]. Technical (milder) @@ -119,10 +119,13 @@ Technical (milder) curl 'http://locke.catalyst.net.nz/git/moodle.git/refs/tags/MOODLE_15_MERGED **INVALID**' + Quote the URL so that libcurl's metecharacter mechanism would + not kick in [DONE]. + * Review the Makefile variables and exporting rules for them, while looking at prefix passing by Kai Ruemmler [DONE]. -* Review the 'sparce object database' change by Linus and move +* Review the 'sparse object database' change by Linus and move the first phase of it to the "master" branch [DONE]. * Decide on mmap(). I am inclined to just stick to mmap @@ -148,7 +151,7 @@ Technical (milder) we discussed some time ago. * Accept patches to cause "read-tree -u" delete a directory when - it makes it empty. + it makes it empty [DONE]. * Perhaps accept patches to do undo/redo. @@ -160,7 +163,7 @@ Technical (milder) lines. * What to do with TABs and LFs in pathnames without breaking GNU - patch? [Discussion started.] + patch? [Have patch in proposed updates.] * Maybe grok PGP signed text/plain in applymbox as well. @@ -196,7 +199,7 @@ Technical (milder) * Updated git-changes-script Jeff Garzik needs [Inquiry for external spec sent out with a quick hack. Will know if that - is what he needs soon enough]. + is what he needs hopefully soon]. * An mechanism to ignore filesystem mode bits altogether. From 13217fc0c90902acf57cc94fa37f5c3ef06b619b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 12 Oct 2005 21:56:04 -0700 Subject: [PATCH 0045/2612] Updates 2005-10-12 night. Signed-off-by: Junio C Hamano --- TODO | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/TODO b/TODO index d5d8c486c14d27..6544209066a3ce 100644 --- a/TODO +++ b/TODO @@ -68,7 +68,8 @@ Technical (heavier) We would need a tool to generate an idx file out of a pack file for this. Also this itself may turn out to be a bad idea, making the set of packs in repositories everybody has - different from each other. + different from each other. [DONE; git-index-pack by Sergey, + tweaking clone by me] * Git daemon, when deployed at kernel.org, might turn out to be quite a burden, since it needs to generate customized packs @@ -115,11 +116,7 @@ Technical (heavier) Technical (milder) ------------------ -* Funny tag names and curl library. - - curl 'http://locke.catalyst.net.nz/git/moodle.git/refs/tags/MOODLE_15_MERGED **INVALID**' - - Quote the URL so that libcurl's metecharacter mechanism would +* Quote the URL so that libcurl's metecharacter mechanism would not kick in [DONE]. * Review the Makefile variables and exporting rules for them, @@ -163,7 +160,8 @@ Technical (milder) lines. * What to do with TABs and LFs in pathnames without breaking GNU - patch? [Have patch in proposed updates.] + patch? [Have patch in proposed updates. Discussion still + ongoing with Paul.] * Maybe grok PGP signed text/plain in applymbox as well. @@ -191,7 +189,7 @@ Technical (milder) * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work tree, have the user resolve it, and then restart from where it - left off. + left off [mechanism mostly done]. * Output full path in the "git-rev-list --objects" output, not just the basename, and see the improved clustering results in @@ -201,12 +199,17 @@ Technical (milder) external spec sent out with a quick hack. Will know if that is what he needs hopefully soon]. -* An mechanism to ignore filesystem mode bits altogether. +* An mechanism to ignore filesystem mode bits altogether [DONE]. Technical (trivial) ------------------- +* Disallow [\001-\040\177] byte values from ref names. Also we + need to disallow ':' (used in refspec), '^' and '~' (postfix + "peel the onion" operators) and leading '+' (again used in + refspec, as prefix "force update" operator) [DONE]. + * short SHA1 naming is not enforcing uniqueness. Should fix [DONE]. * 'git repack' can be DOSed. Should fix [DONE]. From 731c0a892341791ce7b380a0b02fed559e62ba96 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 14 Oct 2005 22:23:35 -0700 Subject: [PATCH 0046/2612] Updates 2005-10-14 night Signed-off-by: Junio C Hamano --- TODO | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index 6544209066a3ce..84c3e7fc1bbc74 100644 --- a/TODO +++ b/TODO @@ -33,6 +33,8 @@ patch, perhaps ;-). Documentation ------------- +* Document the ref naming restrictions. + * Help Jon Loeliger to find place in the documentation to place his drawing. @@ -116,6 +118,12 @@ Technical (heavier) Technical (milder) ------------------ +* Decide the notation of "peeling the onion" operator, and + implement it in sha1_name.c. Perhaps postfix "^{}" to mean + "peel and expect anything", "^{blob}" to mean "peel and barf + unless blob". The current "^0" becomes shorthand for + "^{commit}". [DONE] + * Quote the URL so that libcurl's metecharacter mechanism would not kick in [DONE]. @@ -160,8 +168,12 @@ Technical (milder) lines. * What to do with TABs and LFs in pathnames without breaking GNU - patch? [Have patch in proposed updates. Discussion still - ongoing with Paul.] + patch? [DONE -- go with GNU patch extension proposed by Paul]. + +* Adjust apply.c to proposed GNU patch extension that quotes \n + and \t in C style, inside "". [DONE] + +* Adjust diff.c to the same. [DONE] * Maybe grok PGP signed text/plain in applymbox as well. @@ -207,8 +219,16 @@ Technical (trivial) * Disallow [\001-\040\177] byte values from ref names. Also we need to disallow ':' (used in refspec), '^' and '~' (postfix - "peel the onion" operators) and leading '+' (again used in - refspec, as prefix "force update" operator) [DONE]. + "peel the onion" operators), and '..' ("ref1..ref2" notation + becomes ambiguous otherwise) [DONE]. + +* Update fetch-pack and clone-pack to ignore funny refs from the + other end, while making sure peek-remote does not discard them. + [DONE] + +* Update upload-pack to send tag^{}. This would hopefully help + Pasky's automated tag tracking, and also Martin's findtags. + [DONE] * short SHA1 naming is not enforcing uniqueness. Should fix [DONE]. From acd55229839c1052f6f1911d0187c208fb3a391b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 16 Oct 2005 00:28:26 -0700 Subject: [PATCH 0047/2612] 2005-10-16 midnight. Signed-off-by: Junio C Hamano --- TODO | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/TODO b/TODO index 84c3e7fc1bbc74..7b14dfe44b3850 100644 --- a/TODO +++ b/TODO @@ -35,6 +35,10 @@ Documentation * Document the ref naming restrictions. +* David Ho's report suggests whatchanged documentation should + mention -m as "commonly used options". Steal Linus' + response [DONE]. + * Help Jon Loeliger to find place in the documentation to place his drawing. @@ -118,6 +122,15 @@ Technical (heavier) Technical (milder) ------------------ +* Merlyn reports trouble with http fetch. + +* Maybe look at Cogito and see if I can help Pasky to adjust to + the later core features? Zack Brown's "cg-seek leaving empty + directories" problem is a good example of this. + +* Look at svn importer Smurf has. There is a small cvsimport + update in his tree as well. + * Decide the notation of "peeling the onion" operator, and implement it in sha1_name.c. Perhaps postfix "^{}" to mean "peel and expect anything", "^{blob}" to mean "peel and barf @@ -217,6 +230,11 @@ Technical (milder) Technical (trivial) ------------------- +* Peter Hagervall's sparse fix [DONE]. + +* Alex Riesen reported that hooks are in effect in tests. + Should fix [DONE]. + * Disallow [\001-\040\177] byte values from ref names. Also we need to disallow ':' (used in refspec), '^' and '~' (postfix "peel the onion" operators), and '..' ("ref1..ref2" notation @@ -230,6 +248,14 @@ Technical (trivial) Pasky's automated tag tracking, and also Martin's findtags. [DONE] +* Adjust update-index to quoted --index-info. + +* Prepare apply.c changes for maint branch (0.99.8e). + +* Show ^{commit}, ^{tree} instead of ^{} from ls-remote. + +* Readjust maint branch for the above (0.99.8e). + * short SHA1 naming is not enforcing uniqueness. Should fix [DONE]. * 'git repack' can be DOSed. Should fix [DONE]. From 52da0735f460575b41c525eecc8fd7bfe625693e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 16 Oct 2005 13:38:51 -0700 Subject: [PATCH 0048/2612] 2005-10-16 early afternoon. Signed-off-by: Junio C Hamano --- TODO | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/TODO b/TODO index 7b14dfe44b3850..4addfbe5834eee 100644 --- a/TODO +++ b/TODO @@ -9,9 +9,9 @@ The GIT To-Do File Tool Renames Plan ================= - - In 0.99.8, we will still install the backward compatible - symbolic links in $(bindir). These will however be removed - before 1.0 happens. + - In 0.99.8, we still install the backward compatible symbolic + links in $(bindir). These will however be removed before 1.0 + happens. git-ssh-push and git-ssh-pull pair is not going away within this timeframe, if ever. Each of these old-name commands @@ -57,7 +57,8 @@ Documentation * Update tutorial to cover setting up repository hooks to do common tasks. -* Accept patches to finish missing docs. +* Do we still have missing docs? If so accept patches to finish + them. * Accept patches to talk about "Whoops, it broke. What's next?". @@ -128,8 +129,16 @@ Technical (milder) the later core features? Zack Brown's "cg-seek leaving empty directories" problem is a good example of this. +* Perhaps detect cloning request in upload-pack and cache the + result for next cloning request until any of our refs change. + +* Perhaps accept more "want"s in upload-pack and do something + intelligent about it. + +* Perhaps send less "want"s from fetch-pack. + * Look at svn importer Smurf has. There is a small cvsimport - update in his tree as well. + update in his tree as well [DONE]. * Decide the notation of "peeling the onion" operator, and implement it in sha1_name.c. Perhaps postfix "^{}" to mean @@ -157,14 +166,6 @@ Technical (milder) Assuming writable $GIT_DIR is more acceptable, but the working tree toplevel may not be in a rare usage pattern. -* Perhaps accept more "want"s in upload-pack and do something - intelligent about it. - -* Perhaps detect cloning request in upload-pack and cache the - result for next cloning request until any of our refs change. - -* Perhaps send less "want"s from fetch-pack. - * Encourage concrete proposals to commit log message templates we discussed some time ago. @@ -248,13 +249,13 @@ Technical (trivial) Pasky's automated tag tracking, and also Martin's findtags. [DONE] -* Adjust update-index to quoted --index-info. +* Adjust update-index to quoted --index-info [DONE]. -* Prepare apply.c changes for maint branch (0.99.8e). +* Prepare apply.c changes for maint branch (0.99.8e) [READY]. -* Show ^{commit}, ^{tree} instead of ^{} from ls-remote. +* Perhaps show ^{commit}, ^{tree} instead of ^{} from ls-remote? -* Readjust maint branch for the above (0.99.8e). +* Re-adjust maint branch for the above if we did so. * short SHA1 naming is not enforcing uniqueness. Should fix [DONE]. From 06faa52353397201f6e4543d14f2a27ae1baa9af Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 18 Oct 2005 01:27:22 -0700 Subject: [PATCH 0049/2612] 2005-10-18 midnight Signed-off-by: Junio C Hamano --- TODO | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 4addfbe5834eee..7ff02856134844 100644 --- a/TODO +++ b/TODO @@ -33,7 +33,7 @@ patch, perhaps ;-). Documentation ------------- -* Document the ref naming restrictions. +* Document the ref naming restrictions [DONE]. * David Ho's report suggests whatchanged documentation should mention -m as "commonly used options". Steal Linus' @@ -195,7 +195,7 @@ Technical (milder) state? People with BK background know this operation as 'clean'. 'git checkout [-f] ent [path...]' was suggested by Matthias Urlichs which sounds a natural extention to what the - command currently does. + command currently does [DONE with a prodding by Linus]. * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in From 48286a3e410600ee36fdd9953184bc81f9d0512c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 19 Oct 2005 16:57:43 -0700 Subject: [PATCH 0050/2612] Update 2005-10-19 afternoon. Signed-off-by: Junio C Hamano --- TODO | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 7ff02856134844..339552e5bf0ac7 100644 --- a/TODO +++ b/TODO @@ -84,7 +84,7 @@ Technical (heavier) precompute some packs for popular sets of heads downloaders have and serve that, even if that could give more than the client asks for in some cases. We will know about this soon - enough. + enough [Deployed and fixes and enhancement continuing]. * Libification. There are many places "run once" mentality is ingrained in the management of basic data structures, which @@ -135,7 +135,7 @@ Technical (milder) * Perhaps accept more "want"s in upload-pack and do something intelligent about it. -* Perhaps send less "want"s from fetch-pack. +* Perhaps send less "want"s from fetch-pack [DONE by JS]. * Look at svn importer Smurf has. There is a small cvsimport update in his tree as well [DONE]. From c3b9ed08caf84bca24902b3b2750ad61e411da98 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 26 Oct 2005 18:34:37 -0700 Subject: [PATCH 0051/2612] 2005-10-26 (prepare for 0.99.9) Signed-off-by: Junio C Hamano --- TODO | 39 ++++++++++++++------------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/TODO b/TODO index 339552e5bf0ac7..15ecb597dbf474 100644 --- a/TODO +++ b/TODO @@ -9,14 +9,12 @@ The GIT To-Do File Tool Renames Plan ================= - - In 0.99.8, we still install the backward compatible symbolic - links in $(bindir). These will however be removed before 1.0 - happens. + - In 0.99.9, the backward compatible symbolic links in + $(bindir) will be removed. - git-ssh-push and git-ssh-pull pair is not going away within - this timeframe, if ever. Each of these old-name commands - continues to invoke its old-name counterpart on the other - end. + git-ssh-push and git-ssh-pull pair is not going away if ever. + Each of these old-name commands continues to invoke its + old-name counterpart on the other end. What to expect after 0.99.8 @@ -84,7 +82,8 @@ Technical (heavier) precompute some packs for popular sets of heads downloaders have and serve that, even if that could give more than the client asks for in some cases. We will know about this soon - enough [Deployed and fixes and enhancement continuing]. + enough [DONE part to allow using precomputed pack, but not + dynamic caching part]. * Libification. There are many places "run once" mentality is ingrained in the management of basic data structures, which @@ -123,7 +122,8 @@ Technical (heavier) Technical (milder) ------------------ -* Merlyn reports trouble with http fetch. +* Merlyn reports trouble with http fetch [Hopefully solved by + Nick's updates]. * Maybe look at Cogito and see if I can help Pasky to adjust to the later core features? Zack Brown's "cg-seek leaving empty @@ -133,7 +133,7 @@ Technical (milder) result for next cloning request until any of our refs change. * Perhaps accept more "want"s in upload-pack and do something - intelligent about it. + intelligent about it [Ongoing, by Johannes]. * Perhaps send less "want"s from fetch-pack [DONE by JS]. @@ -201,17 +201,6 @@ Technical (milder) handy if the repository contains wagging heads like "pu" in git.git repository. -* Internally split the project into non-doc and doc parts; add - an extra root for the doc part and merge from it; move the - internal doc source to a separate repository, like the +Meta - repository; experiment if this results in a reasonable - workflow, and document it in howto form if it does. - - The point is to make it possible to fork that part off to - somebody else; then I do not have to maintain Documentation - directory myself anymore, just like I simply slurp the latest - gitk from Paul and not worry about it ;-). - * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work tree, have the user resolve it, and then restart from where it @@ -251,17 +240,17 @@ Technical (trivial) * Adjust update-index to quoted --index-info [DONE]. -* Prepare apply.c changes for maint branch (0.99.8e) [READY]. +* Prepare apply.c changes for maint branch (0.99.8e) [DONE]. -* Perhaps show ^{commit}, ^{tree} instead of ^{} from ls-remote? +* Perhaps show ^{commit}, ^{tree} instead of ^{} from ls-remote? [NO] -* Re-adjust maint branch for the above if we did so. +* Re-adjust maint branch for the above if we did so. [NOT NEEDED] * short SHA1 naming is not enforcing uniqueness. Should fix [DONE]. * 'git repack' can be DOSed. Should fix [DONE]. -* Stop installing the old-name symlinks [POSTPONED, but before 1.0]. +* Stop installing the old-name symlinks [IN 0.99.9]. * 'git merge-projects'? From 7b5f821775fbc6925c8aeff1b2643cd62ea19cff Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 29 Oct 2005 17:51:10 -0700 Subject: [PATCH 0052/2612] GIT 0.99.9 Signed-off-by: Junio C Hamano --- HAVEDONE | 102 ++++++++++++++++++++++++++++++++++++-------------- TODO | 111 ++----------------------------------------------------- 2 files changed, 78 insertions(+), 135 deletions(-) diff --git a/HAVEDONE b/HAVEDONE index 54455589cdd883..459dbae34316ed 100644 --- a/HAVEDONE +++ b/HAVEDONE @@ -1,48 +1,96 @@ -Done in 0.99.8 +Done in 0.99.9 ============== +Ports +~~~~~ + +* Cygwin port [HPA]. + +* OpenBSD build [Merlyn and others]. + + +Fixes +~~~~~ + +* clone request over git native protocol from a repository with + too many refs did not work; this has been fixed. + +* git-daemon got safer for kernel.org use [HPA]. + +* Extended SHA1 parser was not enforcing uniqueness for + abbreviated SHA1; this has been fixed. + +* http transport does not barf on funny characters in URL. + +* The ref naming restrictions have been formalized and the + coreish refuses to create funny refs; we still need to audit + importers. See git-check-ref-format(1). + + New Features and Commands ~~~~~~~~~~~~~~~~~~~~~~~~~ -* 'git pull' now uses 'git-merge' instead of 'git-resolve', so you can - specify alternative merge strategy to use on its command line. +* .git/config file as a per-repository configuration mechanism, + and some commands understand it [Linus]. See + git(7). -* 'git pull -s recursive' has been taught about renaming merges, - which may deal with HPA's klibc vs klibc-kbuild situation better. +* The core.filemode configuration item can be used to make us a + bit more FAT friendly. See git(7). -* Symbolic refs -- instead of using symlinks to express .git/HEAD, - you can have a regular file that stores a single line - 'ref: refs/heads/master' in it. +* The extended SHA1 notation acquired Peel-the-onion operator + ^{type} and ^{}. See git-rev-parse(1). - git-update-ref is the preferred way to write into .git/HEAD, - not "echo >.git/HEAD". git-symbolic-ref is the preferred way - to check which underlying ref a symbolic ref .git/HEAD refers - to, not "readlink .git/HEAD". +* SVN importer [Matthias]. See git-svnimport(1). -* A couple of new diff options (-l and --name-status). +* .git/objects/[0-9a-f]{2} directories are created on demand, + and removed when becomes empty after prune-packed [Linus]. -* Commit walker over http acquired more SSL options. +* Filenames output from various commands without -z option are + quoted when they embed funny characters (TAB and LF) using + C-style quoting within double-quotes, to match the proposed + GNU diff/patch notation [me, but many people contributed in + the discussion]. -* 'git clone' checks out the working tree by default. +* git-mv is expected to be a better replacement for git-rename. + While the latter has two parameter restriction, it acts more + like the regular 'mv' that can move multiple things to one + destinatino directory [Josef Weidendorfer]. +* git-checkout can take filenames to revert the changes to + them. See git-checkout(1) -Fixes -~~~~~ +* The new program git-am is a replacement for git-applymbox that + has saner command line options and a bit easier to use when a + patch does not apply cleanly. + +* git-ls-remote can show unwrapped onions using ^{} notation, to + help Cogito to track tags. + +* git-merge-recursive backend can merge unrelated projects. + +* git-clone over native transport leaves the result packed. + +* git-http-fetch issues multiple requests in parallel when + underlying cURL library supports it [Nick and Daniel]. -* Removed unused commands (diff-helper, rev-tree, and export). +* git-fetch-pack and git-upload-pack try harder to figure out + better common commits [Johannes]. -* Platforms with only Python 2.3 installed can use recursive merge - strategy. +* git-read-tree -u removes a directory when it makes it empty. -* Octopus documented. +* git-diff-* records abbreviated SHA1 names of original and + resulting blob; this sometimes helps to apply otherwise an + unapplicable patch by falling back to 3-way merge. -* Merge is more careful noticing potentially ambiguous situation. +* git-format-patch now takes series of from..to rev ranges and + with '-m --stdout', writes them out to the standard output. + This can be piped to 'git-am' to implement cheaper + cherry-picking. -* Git pull does not blindly do Octopus when Pull: lines in remotes - file specifies more than one remote branches. +* git-tag takes '-u' to specify the tag signer identity [Linus]. -* Commit walker got safer to use after interrupted downloads. +* git-rev-list can take optional pathspecs to skip commits that + do not touch them (--dense) [Linus]. -* Commit walker over http can resume partial downloads. +* Comes with new and improved gitk [Paulus and Linus]. -* More portability fixes for BSD and Solaris. diff --git a/TODO b/TODO index 15ecb597dbf474..6f5191933b4475 100644 --- a/TODO +++ b/TODO @@ -9,15 +9,15 @@ The GIT To-Do File Tool Renames Plan ================= - - In 0.99.9, the backward compatible symbolic links in - $(bindir) will be removed. + - Immedately after 0.99.9, the backward compatible symbolic + links in $(bindir) will be removed. git-ssh-push and git-ssh-pull pair is not going away if ever. Each of these old-name commands continues to invoke its old-name counterpart on the other end. -What to expect after 0.99.8 +What to expect after 0.99.9 =========================== This is written in a form of to-do list for me, so if I say @@ -31,12 +31,6 @@ patch, perhaps ;-). Documentation ------------- -* Document the ref naming restrictions [DONE]. - -* David Ho's report suggests whatchanged documentation should - mention -m as "commonly used options". Steal Linus' - response [DONE]. - * Help Jon Loeliger to find place in the documentation to place his drawing. @@ -68,14 +62,6 @@ Documentation Technical (heavier) ------------------- -* We might want to optimize cloning with GIT native transport - not to explode the pack, and store it in objects/pack instead. - We would need a tool to generate an idx file out of a pack - file for this. Also this itself may turn out to be a bad - idea, making the set of packs in repositories everybody has - different from each other. [DONE; git-index-pack by Sergey, - tweaking clone by me] - * Git daemon, when deployed at kernel.org, might turn out to be quite a burden, since it needs to generate customized packs every time a new request comes in. It may be worthwhile to @@ -111,20 +97,12 @@ Technical (heavier) [Daniel has his own diff tool almost ready to start integrating and testing; Post 1.0] -* Accept patches to fetch multiple objects by HTTP in parallel. - [DONE] - * Plug-in file-level merges [Post 1.0]. -* Per-repository configuration mechanism [DONE by Linus]. - Technical (milder) ------------------ -* Merlyn reports trouble with http fetch [Hopefully solved by - Nick's updates]. - * Maybe look at Cogito and see if I can help Pasky to adjust to the later core features? Zack Brown's "cg-seek leaving empty directories" problem is a good example of this. @@ -132,46 +110,9 @@ Technical (milder) * Perhaps detect cloning request in upload-pack and cache the result for next cloning request until any of our refs change. -* Perhaps accept more "want"s in upload-pack and do something - intelligent about it [Ongoing, by Johannes]. - -* Perhaps send less "want"s from fetch-pack [DONE by JS]. - -* Look at svn importer Smurf has. There is a small cvsimport - update in his tree as well [DONE]. - -* Decide the notation of "peeling the onion" operator, and - implement it in sha1_name.c. Perhaps postfix "^{}" to mean - "peel and expect anything", "^{blob}" to mean "peel and barf - unless blob". The current "^0" becomes shorthand for - "^{commit}". [DONE] - -* Quote the URL so that libcurl's metecharacter mechanism would - not kick in [DONE]. - -* Review the Makefile variables and exporting rules for them, - while looking at prefix passing by Kai Ruemmler [DONE]. - -* Review the 'sparse object database' change by Linus and move - the first phase of it to the "master" branch [DONE]. - -* Decide on mmap(). I am inclined to just stick to mmap - replacement by Johannes Schindelin and do nothing else right - now, except perhaps drop the writing-back support [DONE]. - -* Revisit Santi's patch to move commit temorary files out of the - working tree toplevel [DONE]. - -* More generally, review the use of temporary files again. - Assuming writable $GIT_DIR is more acceptable, but the - working tree toplevel may not be in a rare usage pattern. - * Encourage concrete proposals to commit log message templates we discussed some time ago. -* Accept patches to cause "read-tree -u" delete a directory when - it makes it empty [DONE]. - * Perhaps accept patches to do undo/redo. * Perhaps accept patch to optionally allow '--fuzz' in @@ -181,22 +122,8 @@ Technical (milder) to say '\No newline' if both input ends with incomplete lines. -* What to do with TABs and LFs in pathnames without breaking GNU - patch? [DONE -- go with GNU patch extension proposed by Paul]. - -* Adjust apply.c to proposed GNU patch extension that quotes \n - and \t in C style, inside "". [DONE] - -* Adjust diff.c to the same. [DONE] - * Maybe grok PGP signed text/plain in applymbox as well. -* Perhaps a tool to revert a single file to pre-modification - state? People with BK background know this operation as - 'clean'. 'git checkout [-f] ent [path...]' was suggested by - Matthias Urlichs which sounds a natural extention to what the - command currently does [DONE with a prodding by Linus]. - * Enhance "git repack" to not always use --all; this would be handy if the repository contains wagging heads like "pu" in git.git repository. @@ -214,42 +141,10 @@ Technical (milder) external spec sent out with a quick hack. Will know if that is what he needs hopefully soon]. -* An mechanism to ignore filesystem mode bits altogether [DONE]. - Technical (trivial) ------------------- -* Peter Hagervall's sparse fix [DONE]. - -* Alex Riesen reported that hooks are in effect in tests. - Should fix [DONE]. - -* Disallow [\001-\040\177] byte values from ref names. Also we - need to disallow ':' (used in refspec), '^' and '~' (postfix - "peel the onion" operators), and '..' ("ref1..ref2" notation - becomes ambiguous otherwise) [DONE]. - -* Update fetch-pack and clone-pack to ignore funny refs from the - other end, while making sure peek-remote does not discard them. - [DONE] - -* Update upload-pack to send tag^{}. This would hopefully help - Pasky's automated tag tracking, and also Martin's findtags. - [DONE] - -* Adjust update-index to quoted --index-info [DONE]. - -* Prepare apply.c changes for maint branch (0.99.8e) [DONE]. - -* Perhaps show ^{commit}, ^{tree} instead of ^{} from ls-remote? [NO] - -* Re-adjust maint branch for the above if we did so. [NOT NEEDED] - -* short SHA1 naming is not enforcing uniqueness. Should fix [DONE]. - -* 'git repack' can be DOSed. Should fix [DONE]. - * Stop installing the old-name symlinks [IN 0.99.9]. * 'git merge-projects'? From 321d0e8fe913750a2464d773175ac004412b60f9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 5 Nov 2005 10:31:06 -0800 Subject: [PATCH 0053/2612] Update 2005-11-05 morning. Signed-off-by: Junio C Hamano --- TODO | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/TODO b/TODO index 6f5191933b4475..829d68c272d3eb 100644 --- a/TODO +++ b/TODO @@ -10,7 +10,7 @@ Tool Renames Plan ================= - Immedately after 0.99.9, the backward compatible symbolic - links in $(bindir) will be removed. + links in $(bindir) will be removed [DONE]. git-ssh-push and git-ssh-pull pair is not going away if ever. Each of these old-name commands continues to invoke its @@ -32,7 +32,7 @@ Documentation ------------- * Help Jon Loeliger to find place in the documentation to place - his drawing. + his drawing [DONE]. * Accept patches from people who actually have done CVS migration and update the cvs-migration documentation. @@ -44,7 +44,7 @@ Documentation support for this (but see below about optimized cloning). * Maybe update tutorial with a toy project that involves two or - three developers.. + three developers. * Update tutorial to cover setting up repository hooks to do common tasks. @@ -53,7 +53,7 @@ Documentation them. * Accept patches to talk about "Whoops, it broke. What's - next?". + next?" [Started]. * Accept patches to make formatted tables in asciidoc to work well in both html and man pages (see git-diff(1)). @@ -62,6 +62,15 @@ Documentation Technical (heavier) ------------------- +* Assess the side effects of "make the rest of the things + magically work from any subdirectory" change by Linus. It is + a good change in principle and we would like to have that + behaviour but some tool implementations I am sure are assuming + to never run from anywhere other than the top. + +* Ref namespace management. Perhaps use refs/local/ suggestion + by Linus. + * Git daemon, when deployed at kernel.org, might turn out to be quite a burden, since it needs to generate customized packs every time a new request comes in. It may be worthwhile to @@ -103,6 +112,9 @@ Technical (heavier) Technical (milder) ------------------ +* Binary package split. Plan laid out and discussion mostly + done. + * Maybe look at Cogito and see if I can help Pasky to adjust to the later core features? Zack Brown's "cg-seek leaving empty directories" problem is a good example of this. @@ -141,11 +153,14 @@ Technical (milder) external spec sent out with a quick hack. Will know if that is what he needs hopefully soon]. +* Make sure we do reasonable thing on binary files even in + cherry-pick and rebase. + Technical (trivial) ------------------- -* Stop installing the old-name symlinks [IN 0.99.9]. +* Stop installing the old-name symlinks [DONE]. * 'git merge-projects'? From 1ad3ae4c173bd0557f0d0ebdf438db0f034710e1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 5 Nov 2005 10:58:46 -0800 Subject: [PATCH 0054/2612] Add Meta information. Signed-off-by: Junio C Hamano --- Distrib | 26 ++++++++++++++++++++++++++ KO | 15 +++++++++++++++ Make | 16 ++++++++++++++++ PU | 22 ++++++++++++++++++++++ info/main/doit | 20 ++++++++++++++++++++ info/main/mailmap | 10 ++++++++++ info/main/remotes/ko | 7 +++++++ info/main/remotes/ko-private | 5 +++++ info/main/remotes/paulus | 2 ++ info/main/remotes/sarge | 4 ++++ info/meta/doit | 18 ++++++++++++++++++ info/meta/remotes/ko | 3 +++ 12 files changed, 148 insertions(+) create mode 100755 Distrib create mode 100755 KO create mode 100755 Make create mode 100755 PU create mode 100755 info/main/doit create mode 100644 info/main/mailmap create mode 100644 info/main/remotes/ko create mode 100644 info/main/remotes/ko-private create mode 100644 info/main/remotes/paulus create mode 100644 info/main/remotes/sarge create mode 100755 info/meta/doit create mode 100644 info/meta/remotes/ko diff --git a/Distrib b/Distrib new file mode 100755 index 00000000000000..8e6afeae7a92b7 --- /dev/null +++ b/Distrib @@ -0,0 +1,26 @@ +#!/bin/sh + +# This is not for general consumption but just a simple script +# I use on my private development environment and on kernel.org +# machine to cut binary distribution material. + +V=${1?'version'} +M=master.kernel.org +case `hostname` in +siamese) + scp $0 ${M}:./Distrib + cd /chroot/sarge/build/git && + scp git-*_$V-*.deb git-core-$V.tar.gz ${M}:debian/. + exit + ;; +esac + +G=/pub/software/scm/git +D=$G/debian + +set -x + +ln $HOME/debian/git-*_$V-* $D/. +ln $HOME/debian/git-core-$V.tar.gz $G/. +ln $HOME/rpms/RPMS/i386/git-*-$V-* $G/. +ln $HOME/rpms/SRPMS/git-*-$V-* $G/. diff --git a/KO b/KO new file mode 100755 index 00000000000000..f8decd210f0bfb --- /dev/null +++ b/KO @@ -0,0 +1,15 @@ +#!/bin/sh +# +# Not for general consumption; a script I used to make sure +# I do not accidentally push a rewound master to public. + +git fetch ko +mb=$(git-merge-base ko-master master) +h=$(git-rev-parse $mb ko-master | sort -u | wc -l) +if test "$h" != 1 +then + echo "OOOOOPPPPPPPPPPPPPPSSS! master is not ko-master fast forward." +fi +git show-branch ko-master master +git show-branch ko-maint maint +git show-branch ko-pu pu diff --git a/Make b/Make new file mode 100755 index 00000000000000..c4f084e11c1cd1 --- /dev/null +++ b/Make @@ -0,0 +1,16 @@ +#!/bin/sh + +# DDD=' -DUSE_SYMLINK_HEAD=0' + +PATH=/usr/bin:/bin +LANG=C +LC_CTYPE=C +export PATH LANG LC_CTYPE + +#make prefix=/usr/local \ +make bindir=$HOME/bin/Linux \ + PYTHON_PATH=/usr/bin/python2.4 \ + CFLAGS='-O1 -Wall -g'"$DDD" \ + WITH_SEND_EMAIL=YesPlease \ + WITH_SVNIMPORT=YesPlease \ + "$@" diff --git a/PU b/PU new file mode 100755 index 00000000000000..8d3d38f3d3fd06 --- /dev/null +++ b/PU @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Rebuild "pu" from topic branches. +# + +. git-sh-setup + +git-status && exit +git-checkout pu && +git-reset --hard master && +ORIG_HEAD=`git-rev-parse ORIG_HEAD` || exit + +for H +do + (IFS=",$IFS"; git-pull -n . $H) || exit +done + +(IFS=",$IFS"; git-show-branch master pu $* $ORIG_HEAD) + + + + diff --git a/info/main/doit b/info/main/doit new file mode 100755 index 00000000000000..bd61a5532046a3 --- /dev/null +++ b/info/main/doit @@ -0,0 +1,20 @@ +#!/bin/sh + +HERE=`dirname "$0"` + +case "$1" in +compare | '') + diff -u "$HERE/mailmap" .mailmap + diff -ru "$HERE/remotes" .git/remotes + ;; +save) + cp .mailmap "$HERE/mailmap" + cp -a .git/remotes "$HERE" + ;; +restore) + cp "$HERE/mailmap" .mailmap + cp -a "$HERE/remotes" .git/. + ;; +*) + echo >&2 "usage: $0 [compare|save|restore]" +esac diff --git a/info/main/mailmap b/info/main/mailmap new file mode 100644 index 00000000000000..6868aa691a807e --- /dev/null +++ b/info/main/mailmap @@ -0,0 +1,10 @@ +H. Peter Anvin +H. Peter Anvin +H. Peter Anvin +David_Kgedal +Daniel Barkalow +Martin Langhoff +Jon Loeliger +Jon Loeliger +Robert Fitzsimons + diff --git a/info/main/remotes/ko b/info/main/remotes/ko new file mode 100644 index 00000000000000..70359f54672a03 --- /dev/null +++ b/info/main/remotes/ko @@ -0,0 +1,7 @@ +URL: master.kernel.org:/pub/scm/git/git.git/ +Pull: master:refs/tags/ko-master +Pull: +pu:refs/tags/ko-pu +Pull: maint:refs/tags/ko-maint +Push: master +Push: +pu +Push: maint diff --git a/info/main/remotes/ko-private b/info/main/remotes/ko-private new file mode 100644 index 00000000000000..20ffc21bb006ce --- /dev/null +++ b/info/main/remotes/ko-private @@ -0,0 +1,5 @@ +URL: master.kernel.org:git/.git/ +Push: master:origin +Push: maint:maint +Push: +pu:pu + diff --git a/info/main/remotes/paulus b/info/main/remotes/paulus new file mode 100644 index 00000000000000..ade7b5ae893d31 --- /dev/null +++ b/info/main/remotes/paulus @@ -0,0 +1,2 @@ +URL: http://www.kernel.org/pub/scm/gitk/gitk.git +Pull: :refs/tags/paulus diff --git a/info/main/remotes/sarge b/info/main/remotes/sarge new file mode 100644 index 00000000000000..d6f8df6927f266 --- /dev/null +++ b/info/main/remotes/sarge @@ -0,0 +1,4 @@ +URL: /chroot/sarge/build/git/.git +Push: master:origin +Push: +pu +Push: maint diff --git a/info/meta/doit b/info/meta/doit new file mode 100755 index 00000000000000..0bc74dfc1aca2d --- /dev/null +++ b/info/meta/doit @@ -0,0 +1,18 @@ +#!/bin/sh + +HERE=`dirname "$0"` +REPO=`expr "$HERE" : '\(.*/\)info/meta'` + +case "$1" in +compare | '') + diff -ru "$HERE/remotes" "$REPO.git/remotes" + ;; +save) + cp -a "$REPO.git/remotes" "$HERE" + ;; +restore) + cp -a "$HERE/remotes" "$REPO.git/." + ;; +*) + echo >&2 "usage: $0 [compare|save|restore]" +esac diff --git a/info/meta/remotes/ko b/info/meta/remotes/ko new file mode 100644 index 00000000000000..1b8f65fc48802d --- /dev/null +++ b/info/meta/remotes/ko @@ -0,0 +1,3 @@ +URL: master.kernel.org:/pub/scm/git/git.git/ +Pull: todo:ko-master +Push: master:refs/heads/todo From bf914adf4efca56efbcde63437280a0fde0b5abc Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 5 Nov 2005 12:40:25 -0800 Subject: [PATCH 0055/2612] Fix shipping of Debs in Meta/Distrib Signed-off-by: Junio C Hamano --- Distrib | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Distrib b/Distrib index 8e6afeae7a92b7..0a51b38a5f2d60 100755 --- a/Distrib +++ b/Distrib @@ -10,7 +10,7 @@ case `hostname` in siamese) scp $0 ${M}:./Distrib cd /chroot/sarge/build/git && - scp git-*_$V-*.deb git-core-$V.tar.gz ${M}:debian/. + scp git-*_$V[-.]* git-core-$V.tar.gz ${M}:debian/. exit ;; esac @@ -20,7 +20,7 @@ D=$G/debian set -x -ln $HOME/debian/git-*_$V-* $D/. +ln $HOME/debian/git-*_$V[-.]* $D/. ln $HOME/debian/git-core-$V.tar.gz $G/. ln $HOME/rpms/RPMS/i386/git-*-$V-* $G/. ln $HOME/rpms/SRPMS/git-*-$V-* $G/. From 73610e157caf81b478793919987c8e0abd8af949 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 5 Nov 2005 13:02:24 -0800 Subject: [PATCH 0056/2612] Patches being considered but still not in pu Signed-off-by: Junio C Hamano --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index 829d68c272d3eb..ca8b5d451ce326 100644 --- a/TODO +++ b/TODO @@ -115,6 +115,10 @@ Technical (milder) * Binary package split. Plan laid out and discussion mostly done. +* User-relative paths by Andreas Ericsson. + +* Proxing git:// connection by Paul Collins. + * Maybe look at Cogito and see if I can help Pasky to adjust to the later core features? Zack Brown's "cg-seek leaving empty directories" problem is a good example of this. From 32a1e647773bffe10c40a1fdff1bfbf73806c4b8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 6 Nov 2005 01:55:31 -0800 Subject: [PATCH 0057/2612] Adjust the support scripts to "git binary directory" change. Luckily, as long as you use "git" wrapper, you are forward/backward compatible. Signed-off-by: Junio C Hamano --- KO | 4 ++-- Make | 1 + PU | 14 ++++++-------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/KO b/KO index f8decd210f0bfb..8550df0de060aa 100755 --- a/KO +++ b/KO @@ -4,8 +4,8 @@ # I do not accidentally push a rewound master to public. git fetch ko -mb=$(git-merge-base ko-master master) -h=$(git-rev-parse $mb ko-master | sort -u | wc -l) +mb=$(git merge-base ko-master master) +h=$(git rev-parse $mb ko-master | sort -u | wc -l) if test "$h" != 1 then echo "OOOOOPPPPPPPPPPPPPPSSS! master is not ko-master fast forward." diff --git a/Make b/Make index c4f084e11c1cd1..47d3946a772a54 100755 --- a/Make +++ b/Make @@ -9,6 +9,7 @@ export PATH LANG LC_CTYPE #make prefix=/usr/local \ make bindir=$HOME/bin/Linux \ + gitdir=$HOME/lib/gitbin \ PYTHON_PATH=/usr/bin/python2.4 \ CFLAGS='-O1 -Wall -g'"$DDD" \ WITH_SEND_EMAIL=YesPlease \ diff --git a/PU b/PU index 8d3d38f3d3fd06..856b582b3cc0a9 100755 --- a/PU +++ b/PU @@ -3,19 +3,17 @@ # Rebuild "pu" from topic branches. # -. git-sh-setup - -git-status && exit -git-checkout pu && -git-reset --hard master && -ORIG_HEAD=`git-rev-parse ORIG_HEAD` || exit +git status && exit +git checkout pu && +git reset --hard master && +ORIG_HEAD=`git rev-parse ORIG_HEAD` || exit for H do - (IFS=",$IFS"; git-pull -n . $H) || exit + (IFS=",$IFS"; git pull -n . $H) || exit done -(IFS=",$IFS"; git-show-branch master pu $* $ORIG_HEAD) +(IFS=",$IFS"; git show-branch master pu $* $ORIG_HEAD) From cc50d69a202a4d984d217a5c36323a4547d493f1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 14 Nov 2005 01:04:57 -0800 Subject: [PATCH 0058/2612] interactive PU building. Signed-off-by: Junio C Hamano --- PU | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/PU b/PU index 856b582b3cc0a9..30cb5753d26a41 100755 --- a/PU +++ b/PU @@ -8,13 +8,53 @@ git checkout pu && git reset --hard master && ORIG_HEAD=`git rev-parse ORIG_HEAD` || exit +case "$#" in +0) + # interactive ;-) + shift + HH=`cd .git/refs/heads && find -type f | + sed -e 's/^\.\///' -e '/^master$/d' -e '/^maint$/d' -e '/^pu$/d'` + while test "$HH" + do + I=0 + echo "0: done" + for H in $HH + do + I=$(($I+1)) + echo -n "$I: " + git-show-branch $H + done + echo -n "Merge which ones (0 to finish)? " + read ans + case "$ans" in + '' | 0) + break ;; + esac + I=0 + UNUSE= + USE= + for H in $HH + do + I=$(($I+1)) + case " $ans " in + *' '$I' '*) + USE="$USE$H " + ;; + *) + UNUSE="$UNUSE$H " + ;; + esac + done + git pull -n . $USE || exit + HH=$UNUSE + done + exit + ;; +esac + for H do (IFS=",$IFS"; git pull -n . $H) || exit done (IFS=",$IFS"; git show-branch master pu $* $ORIG_HEAD) - - - - From aec403b7fe97b2ee2be2f1c4457d2b79d084f30d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 16 Nov 2005 21:36:17 -0800 Subject: [PATCH 0059/2612] Adjust for RPM rename. --- Distrib | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Distrib b/Distrib index 0a51b38a5f2d60..46b637753f0808 100755 --- a/Distrib +++ b/Distrib @@ -22,5 +22,5 @@ set -x ln $HOME/debian/git-*_$V[-.]* $D/. ln $HOME/debian/git-core-$V.tar.gz $G/. -ln $HOME/rpms/RPMS/i386/git-*-$V-* $G/. -ln $HOME/rpms/SRPMS/git-*-$V-* $G/. +ln $HOME/rpms/RPMS/i386/git*-$V-* $G/. +ln $HOME/rpms/SRPMS/git-$V-* $G/. From 97a727dfb7ce3c43d2e3e9c5a5877b6094228739 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 16 Nov 2005 21:59:37 -0800 Subject: [PATCH 0060/2612] Update 2005-11-16 before 0.99.9j Signed-off-by: Junio C Hamano --- TODO | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/TODO b/TODO index ca8b5d451ce326..3fce0c93e3923f 100644 --- a/TODO +++ b/TODO @@ -16,6 +16,10 @@ Tool Renames Plan Each of these old-name commands continues to invoke its old-name counterpart on the other end. + - There was a discussion to move bulk of the git-* programs out + of /usr/bin and use /usr/lib/git; the central mechanism was + done, but the actual move is postponed post 1.0. + What to expect after 0.99.9 =========================== @@ -66,7 +70,7 @@ Technical (heavier) magically work from any subdirectory" change by Linus. It is a good change in principle and we would like to have that behaviour but some tool implementations I am sure are assuming - to never run from anywhere other than the top. + to never run from anywhere other than the top. [Post 1.0] * Ref namespace management. Perhaps use refs/local/ suggestion by Linus. @@ -113,15 +117,14 @@ Technical (milder) ------------------ * Binary package split. Plan laid out and discussion mostly - done. + done. [RPM side done; Debian side delegated] -* User-relative paths by Andreas Ericsson. +* User-relative paths by Andreas Ericsson. [Need to ping] -* Proxing git:// connection by Paul Collins. +* Proxing git:// connection by Paul Collins. [Need to ping] * Maybe look at Cogito and see if I can help Pasky to adjust to - the later core features? Zack Brown's "cg-seek leaving empty - directories" problem is a good example of this. + the later core features? * Perhaps detect cloning request in upload-pack and cache the result for next cloning request until any of our refs change. @@ -147,7 +150,7 @@ Technical (milder) * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work tree, have the user resolve it, and then restart from where it - left off [mechanism mostly done]. + left off [mechanism DONE; in pu]. * Output full path in the "git-rev-list --objects" output, not just the basename, and see the improved clustering results in @@ -158,7 +161,10 @@ Technical (milder) is what he needs hopefully soon]. * Make sure we do reasonable thing on binary files even in - cherry-pick and rebase. + cherry-pick and rebase. [mechanism DONE; rebase in pu] + +* Customizable init-db. Personally I think template mechanism + is good enough. Otherwise, maybe add hooks/post-init-db. Technical (trivial) @@ -175,8 +181,8 @@ Technical (trivial) * 'git lost-and-found'? Link dangling commits found by fsck-objects under $GIT_DIR/refs/lost-found/. Then - show-branch or gitk can be used to find any lost commit. [A - feeler patch sent out. Very underwhelming response X-<.] + show-branch or gitk can be used to find any lost commit. + [DONE] Do not name it /lost+found/; that would probably confuse things that mistake it a mount point (not our code but From 3d9b48ef4b0a029c3d84ef7b8ccfa87bd7b9a5ca Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 16 Nov 2005 22:03:23 -0800 Subject: [PATCH 0061/2612] Forgot one fallout from RPM rename Signed-off-by: Junio C Hamano --- Distrib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Distrib b/Distrib index 46b637753f0808..ea18b5a6055ddd 100755 --- a/Distrib +++ b/Distrib @@ -10,7 +10,7 @@ case `hostname` in siamese) scp $0 ${M}:./Distrib cd /chroot/sarge/build/git && - scp git-*_$V[-.]* git-core-$V.tar.gz ${M}:debian/. + scp git-*_$V[-.]* git-$V.tar.gz ${M}:debian/. exit ;; esac From 30a18a2f8da22b861ceeb983f4ba49e37c7c1a34 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 18 Nov 2005 00:17:12 -0800 Subject: [PATCH 0062/2612] 2005-11-18 midnight. Signed-off-by: Junio C Hamano --- KO | 1 + TODO | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/KO b/KO index 8550df0de060aa..c39564f9cf758c 100755 --- a/KO +++ b/KO @@ -9,6 +9,7 @@ h=$(git rev-parse $mb ko-master | sort -u | wc -l) if test "$h" != 1 then echo "OOOOOPPPPPPPPPPPPPPSSS! master is not ko-master fast forward." + exit 1 fi git show-branch ko-master master git show-branch ko-maint maint diff --git a/TODO b/TODO index 3fce0c93e3923f..f08cbb5bd76186 100644 --- a/TODO +++ b/TODO @@ -119,7 +119,11 @@ Technical (milder) * Binary package split. Plan laid out and discussion mostly done. [RPM side done; Debian side delegated] -* User-relative paths by Andreas Ericsson. [Need to ping] +* User-relative paths by Andreas Ericsson. [STILL BREWING BUT + ALMOST DONE] + +* Accessing configuration variables from C and from scripts by + Johannes [STILL BREWING BUT ALMOST DONE]. * Proxing git:// connection by Paul Collins. [Need to ping] @@ -160,11 +164,19 @@ Technical (milder) external spec sent out with a quick hack. Will know if that is what he needs hopefully soon]. +* Customizable init-db. Personally I think template mechanism + is good enough. Otherwise, maybe add hooks/post-init-db. + * Make sure we do reasonable thing on binary files even in cherry-pick and rebase. [mechanism DONE; rebase in pu] -* Customizable init-db. Personally I think template mechanism - is good enough. Otherwise, maybe add hooks/post-init-db. +* Binary diff detection fails if locale set to non English; even + GNU diff 2.8.1 and 2.8.7 in C locale say different things. At + least run diff under C locale (setenv LANG=C LC_ALL=C) for + 1.0. It might be better to have our own binary detection + logic, or even our own diff output without forking an external + diff. [The former _might_ make sense for 1.0, but the latter + is post 1.0]. Technical (trivial) From d175455acaaba6bd39dd2d5ec71961bf238f06d4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 18 Nov 2005 00:31:40 -0800 Subject: [PATCH 0063/2612] Fix the release procedure. Fernando J. Pereda reports that full tarball was not uploaded. Signed-off-by: Junio C Hamano --- Distrib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Distrib b/Distrib index ea18b5a6055ddd..4ddc71f795984a 100755 --- a/Distrib +++ b/Distrib @@ -21,6 +21,6 @@ D=$G/debian set -x ln $HOME/debian/git-*_$V[-.]* $D/. -ln $HOME/debian/git-core-$V.tar.gz $G/. +ln $HOME/debian/git-$V.tar.gz $G/. ln $HOME/rpms/RPMS/i386/git*-$V-* $G/. ln $HOME/rpms/SRPMS/git-$V-* $G/. From 9631a0e5ff90b2c559c14435fe43c33322d1ec2c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Dec 2005 11:51:53 -0800 Subject: [PATCH 0064/2612] 2005-12-04 snapshot after 1.0rc4 --- Distrib | 6 ++++-- TODO | 34 +++++++++++++++------------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/Distrib b/Distrib index 4ddc71f795984a..2d92793112fbba 100755 --- a/Distrib +++ b/Distrib @@ -20,7 +20,9 @@ D=$G/debian set -x +mkdir -p $G/RPMS/i386 $G/RPMS/SRPMS + ln $HOME/debian/git-*_$V[-.]* $D/. ln $HOME/debian/git-$V.tar.gz $G/. -ln $HOME/rpms/RPMS/i386/git*-$V-* $G/. -ln $HOME/rpms/SRPMS/git-$V-* $G/. +ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. +ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. diff --git a/TODO b/TODO index f08cbb5bd76186..3c9946f252f614 100644 --- a/TODO +++ b/TODO @@ -116,16 +116,20 @@ Technical (heavier) Technical (milder) ------------------ +* merge-recursive needs to register conflicting paths as higher + stage entries in the index. For that, it first needs to + construct three trees whose paths are already renamed, and + call 3-way read-tree. + * Binary package split. Plan laid out and discussion mostly done. [RPM side done; Debian side delegated] -* User-relative paths by Andreas Ericsson. [STILL BREWING BUT - ALMOST DONE] +* User-relative paths by Andreas Ericsson. [DONE] * Accessing configuration variables from C and from scripts by - Johannes [STILL BREWING BUT ALMOST DONE]. + Johannes [DONE]. -* Proxing git:// connection by Paul Collins. [Need to ping] +* Proxing git:// connection by Paul Collins. [DONE] * Maybe look at Cogito and see if I can help Pasky to adjust to the later core features? @@ -154,21 +158,21 @@ Technical (milder) * Make rebase restartable; instead of skipping what cannot be automatically forward ported, leave the conflicts in the work tree, have the user resolve it, and then restart from where it - left off [mechanism DONE; in pu]. + left off [DONE]. * Output full path in the "git-rev-list --objects" output, not just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. -* Updated git-changes-script Jeff Garzik needs [Inquiry for - external spec sent out with a quick hack. Will know if that - is what he needs hopefully soon]. +* Updated git-changes-script Jeff Garzik needs [Not needed -- + pull into local or borrow temporarily with alternate object + directories environment variable and use normal tools]. * Customizable init-db. Personally I think template mechanism is good enough. Otherwise, maybe add hooks/post-init-db. * Make sure we do reasonable thing on binary files even in - cherry-pick and rebase. [mechanism DONE; rebase in pu] + cherry-pick and rebase [DONE]. * Binary diff detection fails if locale set to non English; even GNU diff 2.8.1 and 2.8.7 in C locale say different things. At @@ -205,16 +209,8 @@ Technical (trivial) ko-rc are in refs/tags/). * We would want test scripts for the relative directory path - stuff Linus has been working on. So far, the following - commands should be usable with relative directory paths: - - git-update-index - git-ls-files - git-diff-files - git-diff-index - git-diff-tree - git-rev-list - git-rev-parse + stuff Linus has been working on. Most of the C-level + commands should be usable with relative directory paths. * In a freashly created empty repository, `git fetch foo:bar` works OK, but `git checkout bar` afterwards does not (missing From 52dd75885cd3a78dcb3d7f4f0ddf16f4b8f62b56 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Dec 2005 23:41:59 -0800 Subject: [PATCH 0065/2612] As of 1.0rc4 Revamp TODO list and stop HAVEDONE (does not make sense to list everything since 0.99). Signed-off-by: Junio C Hamano --- HAVEDONE | 96 -------------------------------------- TODO | 137 +++++++++++++------------------------------------------ 2 files changed, 31 insertions(+), 202 deletions(-) delete mode 100644 HAVEDONE diff --git a/HAVEDONE b/HAVEDONE deleted file mode 100644 index 459dbae34316ed..00000000000000 --- a/HAVEDONE +++ /dev/null @@ -1,96 +0,0 @@ -Done in 0.99.9 -============== - -Ports -~~~~~ - -* Cygwin port [HPA]. - -* OpenBSD build [Merlyn and others]. - - -Fixes -~~~~~ - -* clone request over git native protocol from a repository with - too many refs did not work; this has been fixed. - -* git-daemon got safer for kernel.org use [HPA]. - -* Extended SHA1 parser was not enforcing uniqueness for - abbreviated SHA1; this has been fixed. - -* http transport does not barf on funny characters in URL. - -* The ref naming restrictions have been formalized and the - coreish refuses to create funny refs; we still need to audit - importers. See git-check-ref-format(1). - - -New Features and Commands -~~~~~~~~~~~~~~~~~~~~~~~~~ - -* .git/config file as a per-repository configuration mechanism, - and some commands understand it [Linus]. See - git(7). - -* The core.filemode configuration item can be used to make us a - bit more FAT friendly. See git(7). - -* The extended SHA1 notation acquired Peel-the-onion operator - ^{type} and ^{}. See git-rev-parse(1). - -* SVN importer [Matthias]. See git-svnimport(1). - -* .git/objects/[0-9a-f]{2} directories are created on demand, - and removed when becomes empty after prune-packed [Linus]. - -* Filenames output from various commands without -z option are - quoted when they embed funny characters (TAB and LF) using - C-style quoting within double-quotes, to match the proposed - GNU diff/patch notation [me, but many people contributed in - the discussion]. - -* git-mv is expected to be a better replacement for git-rename. - While the latter has two parameter restriction, it acts more - like the regular 'mv' that can move multiple things to one - destinatino directory [Josef Weidendorfer]. - -* git-checkout can take filenames to revert the changes to - them. See git-checkout(1) - -* The new program git-am is a replacement for git-applymbox that - has saner command line options and a bit easier to use when a - patch does not apply cleanly. - -* git-ls-remote can show unwrapped onions using ^{} notation, to - help Cogito to track tags. - -* git-merge-recursive backend can merge unrelated projects. - -* git-clone over native transport leaves the result packed. - -* git-http-fetch issues multiple requests in parallel when - underlying cURL library supports it [Nick and Daniel]. - -* git-fetch-pack and git-upload-pack try harder to figure out - better common commits [Johannes]. - -* git-read-tree -u removes a directory when it makes it empty. - -* git-diff-* records abbreviated SHA1 names of original and - resulting blob; this sometimes helps to apply otherwise an - unapplicable patch by falling back to 3-way merge. - -* git-format-patch now takes series of from..to rev ranges and - with '-m --stdout', writes them out to the standard output. - This can be piped to 'git-am' to implement cheaper - cherry-picking. - -* git-tag takes '-u' to specify the tag signer identity [Linus]. - -* git-rev-list can take optional pathspecs to skip commits that - do not touch them (--dense) [Linus]. - -* Comes with new and improved gitk [Paulus and Linus]. - diff --git a/TODO b/TODO index 3c9946f252f614..62020893988b14 100644 --- a/TODO +++ b/TODO @@ -6,23 +6,8 @@ The GIT To-Do File http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO -Tool Renames Plan -================= - - - Immedately after 0.99.9, the backward compatible symbolic - links in $(bindir) will be removed [DONE]. - - git-ssh-push and git-ssh-pull pair is not going away if ever. - Each of these old-name commands continues to invoke its - old-name counterpart on the other end. - - - There was a discussion to move bulk of the git-* programs out - of /usr/bin and use /usr/lib/git; the central mechanism was - done, but the actual move is postponed post 1.0. - - -What to expect after 0.99.9 -=========================== +What to expect until 1.0 +======================== This is written in a form of to-do list for me, so if I say "accept patch", it means I do not currently plan to do that @@ -31,13 +16,12 @@ a hint. Also whatever I marked "Perhaps" do not have to happen if ever -- only if somebody cares enough and submits a clean patch, perhaps ;-). +Only handful things remain until 1.0. + Documentation ------------- -* Help Jon Loeliger to find place in the documentation to place - his drawing [DONE]. - * Accept patches from people who actually have done CVS migration and update the cvs-migration documentation. Link the documentation from the main git.txt page. @@ -57,33 +41,18 @@ Documentation them. * Accept patches to talk about "Whoops, it broke. What's - next?" [Started]. + next?" [ONGOING]. * Accept patches to make formatted tables in asciidoc to work well in both html and man pages (see git-diff(1)). +* Work around multiple synopses lines in manual pages + (e.g. git-bisect). + Technical (heavier) ------------------- -* Assess the side effects of "make the rest of the things - magically work from any subdirectory" change by Linus. It is - a good change in principle and we would like to have that - behaviour but some tool implementations I am sure are assuming - to never run from anywhere other than the top. [Post 1.0] - -* Ref namespace management. Perhaps use refs/local/ suggestion - by Linus. - -* Git daemon, when deployed at kernel.org, might turn out to be - quite a burden, since it needs to generate customized packs - every time a new request comes in. It may be worthwhile to - precompute some packs for popular sets of heads downloaders - have and serve that, even if that could give more than the - client asks for in some cases. We will know about this soon - enough [DONE part to allow using precomputed pack, but not - dynamic caching part]. - * Libification. There are many places "run once" mentality is ingrained in the management of basic data structures, which need to be fixed. [Matthias Urlichs is already working on @@ -100,48 +69,49 @@ Technical (heavier) closely, (3) somebody who tends to follow only the point releases. -* Maybe an Emacs VC backend. + This needs a matching smart on the dumb protocol downloader. -* 'git split-projects'? This requires updated 'git-rev-list' to - skip irrelevant commits. - Message-ID: +* Maybe an Emacs VC backend. * Look at libified GNU diff CVS seems to use, or libxdiff. [Daniel has his own diff tool almost ready to start integrating and testing; Post 1.0] -* Plug-in file-level merges [Post 1.0]. +* Plug-in file-level merges [Post 1.0]. On the other hand, we + may not even need this; just tell people to run "xxdiff -U" on + the working tree files. + +* Ref namespace management. Perhaps use refs/local/ suggestion + by Linus. [Does not seem to be high on people's priority list, + and not interested myself. People can resurrect this + discussion if they want.] Technical (milder) ------------------ +* strip leading directory from ls-tree output. + +* diff stopping at the first output; qgit wants to know if this + tree has any A or D from the other tree and nothing else. + Would help internal tree-diff in rev-list as well [can be post + 1.0]. + * merge-recursive needs to register conflicting paths as higher stage entries in the index. For that, it first needs to construct three trees whose paths are already renamed, and - call 3-way read-tree. + call 3-way read-tree. Alternatively, update-index needs to + give it a way to construct higher stages [can be post 1.0, but + nicer to have in 1.0]. -* Binary package split. Plan laid out and discussion mostly - done. [RPM side done; Debian side delegated] - -* User-relative paths by Andreas Ericsson. [DONE] - -* Accessing configuration variables from C and from scripts by - Johannes [DONE]. +* daemon --strict-symlink [can be post 1.0]. -* Proxing git:// connection by Paul Collins. [DONE] - -* Maybe look at Cogito and see if I can help Pasky to adjust to - the later core features? +* Binary package split. Plan laid out and discussion mostly + done. [RPM side done; Debian side thrown over the wall.] * Perhaps detect cloning request in upload-pack and cache the result for next cloning request until any of our refs change. -* Encourage concrete proposals to commit log message templates - we discussed some time ago. - -* Perhaps accept patches to do undo/redo. - * Perhaps accept patch to optionally allow '--fuzz' in 'git-apply'. @@ -155,59 +125,14 @@ Technical (milder) handy if the repository contains wagging heads like "pu" in git.git repository. -* Make rebase restartable; instead of skipping what cannot be - automatically forward ported, leave the conflicts in the work - tree, have the user resolve it, and then restart from where it - left off [DONE]. - * Output full path in the "git-rev-list --objects" output, not just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. -* Updated git-changes-script Jeff Garzik needs [Not needed -- - pull into local or borrow temporarily with alternate object - directories environment variable and use normal tools]. - -* Customizable init-db. Personally I think template mechanism - is good enough. Otherwise, maybe add hooks/post-init-db. - -* Make sure we do reasonable thing on binary files even in - cherry-pick and rebase [DONE]. - -* Binary diff detection fails if locale set to non English; even - GNU diff 2.8.1 and 2.8.7 in C locale say different things. At - least run diff under C locale (setenv LANG=C LC_ALL=C) for - 1.0. It might be better to have our own binary detection - logic, or even our own diff output without forking an external - diff. [The former _might_ make sense for 1.0, but the latter - is post 1.0]. - Technical (trivial) ------------------- -* Stop installing the old-name symlinks [DONE]. - -* 'git merge-projects'? - - Subject: Re: Merges without bases - References: <1125004228.4110.20.camel@localhost.localdomain> - Date: Thu, 25 Aug 2005 15:26:36 -0700 - Message-ID: <7vvf1tps9v.fsf@assigned-by-dhcp.cox.net> - -* 'git lost-and-found'? Link dangling commits found by - fsck-objects under $GIT_DIR/refs/lost-found/. Then - show-branch or gitk can be used to find any lost commit. - [DONE] - - Do not name it /lost+found/; that would probably confuse - things that mistake it a mount point (not our code but - somebody else's). - -* Add simple globbing rules to git-show-branch so that I can - say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and - ko-rc are in refs/tags/). - * We would want test scripts for the relative directory path stuff Linus has been working on. Most of the C-level commands should be usable with relative directory paths. From 50f20376d7013b447248b26d9ad3ce19bc38611d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 5 Dec 2005 01:10:11 -0800 Subject: [PATCH 0066/2612] 2005-12-05 midnight Signed-off-by: Junio C Hamano --- TODO | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 62020893988b14..d97fc7a790a877 100644 --- a/TODO +++ b/TODO @@ -6,8 +6,8 @@ The GIT To-Do File http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO -What to expect until 1.0 -======================== +What to expect until and after 1.0 +================================== This is written in a form of to-do list for me, so if I say "accept patch", it means I do not currently plan to do that @@ -70,6 +70,7 @@ Technical (heavier) releases. This needs a matching smart on the dumb protocol downloader. + [Definitely post 1.0]. * Maybe an Emacs VC backend. @@ -90,7 +91,13 @@ Technical (heavier) Technical (milder) ------------------ -* strip leading directory from ls-tree output. +* strip leading directory from ls-tree output, to match ls-files + output. + + I am of two minds about this one. diff output must always be + -p1 format no matter where the command was started, and + ls-tree might be easier to use if it matched diff, not + ls-files. * diff stopping at the first output; qgit wants to know if this tree has any A or D from the other tree and nothing else. From 0ec237ea19c9e73967112bfa9f1434d4bd0535ac Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 6 Dec 2005 00:13:39 -0800 Subject: [PATCH 0067/2612] Make: There is no gitdir. Signed-off-by: Junio C Hamano --- Make | 1 - 1 file changed, 1 deletion(-) diff --git a/Make b/Make index 47d3946a772a54..c4f084e11c1cd1 100755 --- a/Make +++ b/Make @@ -9,7 +9,6 @@ export PATH LANG LC_CTYPE #make prefix=/usr/local \ make bindir=$HOME/bin/Linux \ - gitdir=$HOME/lib/gitbin \ PYTHON_PATH=/usr/bin/python2.4 \ CFLAGS='-O1 -Wall -g'"$DDD" \ WITH_SEND_EMAIL=YesPlease \ From 4ae3fe546977dc7342cba6c6300ca333ec175d0d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 6 Dec 2005 00:15:43 -0800 Subject: [PATCH 0068/2612] More docs. Signed-off-by: Junio C Hamano --- TODO | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index d97fc7a790a877..caee7c9e7073eb 100644 --- a/TODO +++ b/TODO @@ -35,7 +35,7 @@ Documentation three developers. * Update tutorial to cover setting up repository hooks to do - common tasks. + common tasks [Mostly done, with Carl's help]. * Do we still have missing docs? If so accept patches to finish them. @@ -44,10 +44,11 @@ Documentation next?" [ONGOING]. * Accept patches to make formatted tables in asciidoc to work - well in both html and man pages (see git-diff(1)). + well in both html and man pages (see git-diff(1)) [DONE -- + avoid them ;-)]. * Work around multiple synopses lines in manual pages - (e.g. git-bisect). + (e.g. git-bisect) [DONE -- avoid them ;-)]. Technical (heavier) From e6e947f5de840b64e5547006b6660c4dcef6d31e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 18 Dec 2005 14:01:28 -0800 Subject: [PATCH 0069/2612] 2005-12-18 --- mostly done for 1.0 Signed-off-by: Junio C Hamano --- Make | 2 +- TODO | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Make b/Make index c4f084e11c1cd1..6750f7070d421e 100755 --- a/Make +++ b/Make @@ -10,7 +10,7 @@ export PATH LANG LC_CTYPE #make prefix=/usr/local \ make bindir=$HOME/bin/Linux \ PYTHON_PATH=/usr/bin/python2.4 \ - CFLAGS='-O1 -Wall -g'"$DDD" \ + CFLAGS='-Os -Wall -Wdeclaration-after-statement -g'"$DDD" \ WITH_SEND_EMAIL=YesPlease \ WITH_SVNIMPORT=YesPlease \ "$@" diff --git a/TODO b/TODO index caee7c9e7073eb..eafbbce5e80821 100644 --- a/TODO +++ b/TODO @@ -41,7 +41,7 @@ Documentation them. * Accept patches to talk about "Whoops, it broke. What's - next?" [ONGOING]. + next?" [I think this is done]. * Accept patches to make formatted tables in asciidoc to work well in both html and man pages (see git-diff(1)) [DONE -- @@ -109,8 +109,8 @@ Technical (milder) stage entries in the index. For that, it first needs to construct three trees whose paths are already renamed, and call 3-way read-tree. Alternatively, update-index needs to - give it a way to construct higher stages [can be post 1.0, but - nicer to have in 1.0]. + give it a way to construct higher stages [DONE using the + "alternatively" implementation]. * daemon --strict-symlink [can be post 1.0]. From 95b9f4f212c2eb074a2f078eaf99e67e08be34a6 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 21 Dec 2005 22:40:52 -0800 Subject: [PATCH 0070/2612] Use CFLAGS=-O1 for debugging. --- Make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Make b/Make index 6750f7070d421e..be6be3836bb73c 100755 --- a/Make +++ b/Make @@ -10,7 +10,7 @@ export PATH LANG LC_CTYPE #make prefix=/usr/local \ make bindir=$HOME/bin/Linux \ PYTHON_PATH=/usr/bin/python2.4 \ - CFLAGS='-Os -Wall -Wdeclaration-after-statement -g'"$DDD" \ + CFLAGS='-O1 -Wall -Wdeclaration-after-statement -g'"$DDD" \ WITH_SEND_EMAIL=YesPlease \ WITH_SVNIMPORT=YesPlease \ "$@" From bd8b47db1a26557181fe4e807dd282b96863b3e6 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 21 Dec 2005 22:41:21 -0800 Subject: [PATCH 0071/2612] 2005-12-21 TODO updates. --- TODO | 89 +++++++++++++++++++++++++++--------------------------------- 1 file changed, 40 insertions(+), 49 deletions(-) diff --git a/TODO b/TODO index eafbbce5e80821..919ee3a13bc781 100644 --- a/TODO +++ b/TODO @@ -6,8 +6,8 @@ The GIT To-Do File http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO -What to expect until and after 1.0 -================================== +What to expect from now on +========================== This is written in a form of to-do list for me, so if I say "accept patch", it means I do not currently plan to do that @@ -16,16 +16,10 @@ a hint. Also whatever I marked "Perhaps" do not have to happen if ever -- only if somebody cares enough and submits a clean patch, perhaps ;-). -Only handful things remain until 1.0. - Documentation ------------- -* Accept patches from people who actually have done CVS - migration and update the cvs-migration documentation. - Link the documentation from the main git.txt page. - * Talk about using rsync just once at the beginning when initializing a remote repository so that local packs do not need to be expanded. I personally do not think we need tool @@ -34,21 +28,24 @@ Documentation * Maybe update tutorial with a toy project that involves two or three developers. -* Update tutorial to cover setting up repository hooks to do - common tasks [Mostly done, with Carl's help]. -* Do we still have missing docs? If so accept patches to finish - them. +Design issues +------------- + +* Plug-in file-level merges. On the other hand, we may not even + need this; just tell people to run "xxdiff -U" on the working + tree files. -* Accept patches to talk about "Whoops, it broke. What's - next?" [I think this is done]. +* Ref namespace management. Perhaps use refs/local/ suggestion + by Linus. [Does not seem to be high on people's priority list, + and not interested myself. People can resurrect this + discussion if they want.] -* Accept patches to make formatted tables in asciidoc to work - well in both html and man pages (see git-diff(1)) [DONE -- - avoid them ;-)]. +* Perhaps "everything in config file"? Especially remotes/ + shortcuts. I am modestly negative about this. -* Work around multiple synopses lines in manual pages - (e.g. git-bisect) [DONE -- avoid them ;-)]. +* Perhaps "setting umask from git_config()"? I am modestly + negative about this. Technical (heavier) @@ -57,8 +54,7 @@ Technical (heavier) * Libification. There are many places "run once" mentality is ingrained in the management of basic data structures, which need to be fixed. [Matthias Urlichs is already working on - this: ; Post - 1.0]. + this: ] * Maybe a pack optimizer. @@ -71,27 +67,28 @@ Technical (heavier) releases. This needs a matching smart on the dumb protocol downloader. - [Definitely post 1.0]. * Maybe an Emacs VC backend. * Look at libified GNU diff CVS seems to use, or libxdiff. [Daniel has his own diff tool almost ready to start - integrating and testing; Post 1.0] - -* Plug-in file-level merges [Post 1.0]. On the other hand, we - may not even need this; just tell people to run "xxdiff -U" on - the working tree files. - -* Ref namespace management. Perhaps use refs/local/ suggestion - by Linus. [Does not seem to be high on people's priority list, - and not interested myself. People can resurrect this - discussion if they want.] + integrating and testing] Technical (milder) ------------------ +* send-pack/receive-pack protocol updates, to allow the receiver + to report what it did to the ref update requests. + +* Perhaps a smarter HTTP anonymous download via CGI. + +* Prepare to enable "always use symbolic refs for HEAD" patch. + We need a timeline to force Porcelains to get ready. + +* Forbid/ignore pack names that do not conform to the convention + sha1_pack_name() assumes and reject in check_packed_git_idx(). + * strip leading directory from ls-tree output, to match ls-files output. @@ -102,20 +99,9 @@ Technical (milder) * diff stopping at the first output; qgit wants to know if this tree has any A or D from the other tree and nothing else. - Would help internal tree-diff in rev-list as well [can be post - 1.0]. + Would help internal tree-diff in rev-list as well. -* merge-recursive needs to register conflicting paths as higher - stage entries in the index. For that, it first needs to - construct three trees whose paths are already renamed, and - call 3-way read-tree. Alternatively, update-index needs to - give it a way to construct higher stages [DONE using the - "alternatively" implementation]. - -* daemon --strict-symlink [can be post 1.0]. - -* Binary package split. Plan laid out and discussion mostly - done. [RPM side done; Debian side thrown over the wall.] +* daemon --strict-symlink. * Perhaps detect cloning request in upload-pack and cache the result for next cloning request until any of our refs change. @@ -127,11 +113,10 @@ Technical (milder) to say '\No newline' if both input ends with incomplete lines. -* Maybe grok PGP signed text/plain in applymbox as well. +* Perhaps deal with "Files differ" (binary diff) in non C + locales. -* Enhance "git repack" to not always use --all; this would be - handy if the repository contains wagging heads like "pu" in - git.git repository. +* Maybe grok PGP signed text/plain in applymbox as well. * Output full path in the "git-rev-list --objects" output, not just the basename, and see the improved clustering results in @@ -141,6 +126,12 @@ Technical (milder) Technical (trivial) ------------------- +* Versioning scheme. The next maintenance installment will be + 1.0.3 not 1.0.0c. The next feature release would be 1.1.0. + +* Either drop supporting Debian myself or coerce patches out of + the official maintainer. + * We would want test scripts for the relative directory path stuff Linus has been working on. Most of the C-level commands should be usable with relative directory paths. From 4ec53b6fb6f7454e45a561d6a62fd4e45e0cd2e9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 22 Dec 2005 23:57:26 -0800 Subject: [PATCH 0072/2612] 2005-12-23 midnight TODO updates. Signed-off-by: Junio C Hamano --- TODO | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 919ee3a13bc781..4135038fb326af 100644 --- a/TODO +++ b/TODO @@ -44,9 +44,6 @@ Design issues * Perhaps "everything in config file"? Especially remotes/ shortcuts. I am modestly negative about this. -* Perhaps "setting umask from git_config()"? I am modestly - negative about this. - Technical (heavier) ------------------- @@ -84,10 +81,13 @@ Technical (milder) * Perhaps a smarter HTTP anonymous download via CGI. * Prepare to enable "always use symbolic refs for HEAD" patch. - We need a timeline to force Porcelains to get ready. + We need a timeline to force Porcelains to get ready. Last + time I looked at them I got an impression that gitweb was not + ready. * Forbid/ignore pack names that do not conform to the convention - sha1_pack_name() assumes and reject in check_packed_git_idx(). + sha1_pack_name() assumes and reject in check_packed_git_idx() + [In pu] * strip leading directory from ls-tree output, to match ls-files output. @@ -97,6 +97,15 @@ Technical (milder) ls-tree might be easier to use if it matched diff, not ls-files. + [We should not do this, or do this carefully, if we were to + merge the "git-checkout (--|) work from + subdirectory" patch.] + +* Any Porcelain-ish we forgot or punted to make usable from + subdirectory? I think the last pass caught everything and + what are remaining are whole-tree or whole repository + operations. + * diff stopping at the first output; qgit wants to know if this tree has any A or D from the other tree and nothing else. Would help internal tree-diff in rev-list as well. @@ -136,7 +145,7 @@ Technical (trivial) stuff Linus has been working on. Most of the C-level commands should be usable with relative directory paths. -* In a freashly created empty repository, `git fetch foo:bar` +* In a freshly created empty repository, `git fetch foo:bar` works OK, but `git checkout bar` afterwards does not (missing `.git/HEAD`). From 049e159103082834c5ba67d4857026ccbf370560 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Dec 2005 01:10:28 -0800 Subject: [PATCH 0073/2612] Do more things on kernel.org. --- DoKernelOrg | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 DoKernelOrg diff --git a/DoKernelOrg b/DoKernelOrg new file mode 100755 index 00000000000000..54fae2e2706c2e --- /dev/null +++ b/DoKernelOrg @@ -0,0 +1,32 @@ +#!/bin/sh + +cd $HOME/git && +make clean && +git reset --hard && +make clean && +git checkout master && +git pull . origin && +make clean test doc install && +make clean +git checkout pu && +make test clean && +case "$1" in +maint | master) + git checkout "$1" && + make rpm && + cp git-*.tar.gz $HOME/tarpit/ && + make clean && + make git doc && + V=$(./git --version | sed -e 's/git version //') && + D=`pwd` && + M="git-man-pages-$V" && + rm -rf "$M" && + rm -f "$M".tar.gz && + ./Make man1="$D/$M/man1" man7="$D/$M/man7" -C Documentation install && + tar zcf "$HOME/tarpit/$M".tar.gz "$M" && + rm -fr "$M" && + make clean || + exit $? + ;; +esac +git checkout master From 259480fc8ee4c040f10d2c5bb72e5e5c2bd753af Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Dec 2005 01:45:32 -0800 Subject: [PATCH 0074/2612] Do more and more things on kernel.org --- Distrib | 28 ---------------------------- DoKernelOrg | 38 ++++++++++++++++++++++++++------------ 2 files changed, 26 insertions(+), 40 deletions(-) delete mode 100755 Distrib diff --git a/Distrib b/Distrib deleted file mode 100755 index 2d92793112fbba..00000000000000 --- a/Distrib +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -# This is not for general consumption but just a simple script -# I use on my private development environment and on kernel.org -# machine to cut binary distribution material. - -V=${1?'version'} -M=master.kernel.org -case `hostname` in -siamese) - scp $0 ${M}:./Distrib - cd /chroot/sarge/build/git && - scp git-*_$V[-.]* git-$V.tar.gz ${M}:debian/. - exit - ;; -esac - -G=/pub/software/scm/git -D=$G/debian - -set -x - -mkdir -p $G/RPMS/i386 $G/RPMS/SRPMS - -ln $HOME/debian/git-*_$V[-.]* $D/. -ln $HOME/debian/git-$V.tar.gz $G/. -ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. -ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. diff --git a/DoKernelOrg b/DoKernelOrg index 54fae2e2706c2e..80457f4e5be593 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -1,32 +1,46 @@ #!/bin/sh +J= +# J='-l 4 -j' +nodo=echo + cd $HOME/git && make clean && git reset --hard && make clean && git checkout master && git pull . origin && -make clean test doc install && -make clean -git checkout pu && -make test clean && +make clean && + case "$1" in +'') + make $J install && + make test && + make clean && + git checkout pu && + make $J clean && + make test clean + ;; maint | master) + G=/pub/software/scm/git && + git checkout "$1" && make rpm && - cp git-*.tar.gz $HOME/tarpit/ && - make clean && - make git doc && + make $J git && V=$(./git --version | sed -e 's/git version //') && + $nodo ln git-$V.tar.gz $G/. && D=`pwd` && M="git-man-pages-$V" && rm -rf "$M" && rm -f "$M".tar.gz && - ./Make man1="$D/$M/man1" man7="$D/$M/man7" -C Documentation install && - tar zcf "$HOME/tarpit/$M".tar.gz "$M" && + make man1="$D/$M/man1" man7="$D/$M/man7" -C Documentation install && + $nodo tar zcf "$G/$M".tar.gz "$M" && rm -fr "$M" && - make clean || - exit $? + make clean && + + $nodo ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. && + $nodo ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. ;; -esac +esac || exit $? + git checkout master From ae9133ae2de098045e2b8e955ca685378e3dba2e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Dec 2005 01:52:28 -0800 Subject: [PATCH 0075/2612] Do more and more things on kernel.org --- DoKernelOrg | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 80457f4e5be593..17788aa61247b9 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -25,17 +25,19 @@ maint | master) G=/pub/software/scm/git && git checkout "$1" && - make rpm && + make rpm >./:rpm.log 2>&1 && make $J git && V=$(./git --version | sed -e 's/git version //') && $nodo ln git-$V.tar.gz $G/. && D=`pwd` && M="git-man-pages-$V" && - rm -rf "$M" && - rm -f "$M".tar.gz && - make man1="$D/$M/man1" man7="$D/$M/man7" -C Documentation install && + H="git-html-pages-$V" && + rm -rf "$M" "$H" && + make man1="$D/$M/man1" man7="$D/$M/man7" WEBDOC_DEST="$D/$H" \ + -C Documentation install install-webdoc >./:doc.log 2>&1 && $nodo tar zcf "$G/$M".tar.gz "$M" && - rm -fr "$M" && + $nodo tar zcf "$G/$H".tar.gz "$H" && + rm -fr "$M" "$H" ./:rpm.log ./:doc.log && make clean && $nodo ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. && From c150b0e7f20fa5c674dab49be912338ae42aba77 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Dec 2005 21:00:32 -0800 Subject: [PATCH 0076/2612] Add Doit script. --- Doit | 44 ++++++++++++++++++++++++++++++++++++++++++++ R | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100755 Doit create mode 100755 R diff --git a/Doit b/Doit new file mode 100755 index 00000000000000..7c70f94ee0eae1 --- /dev/null +++ b/Doit @@ -0,0 +1,44 @@ +#!/bin/sh + +try_if_new () { + branch="$1" + to_install="$2" + commits=$(git-rev-list "ko-${branch}..${branch}") + + to_build=no + case "$commits" in + '') + echo "* Up-to-date at ko-$branch" + to_build=no + ;; + *) + to_build=yes + ;; + esac + + case "$to_install" in + ?*) + to_build=yes + ;; + esac + + case "$to_build" in + yes) + Meta/Make clean >/dev/null 2>&1 && + git checkout "$branch" && + echo "* Testing $branch" && + Meta/Make clean test >./":${branch}.log" 2>&1 && + case "$to_install" in + ?*) + Meta/Make install >>./":${branch}.log" 2>&1 ;; + esac + esac +} + +git fetch ko && + +try_if_new maint && +try_if_new pu && +try_if_new master install && +Meta/Make clean >/dev/null 2>&1 + diff --git a/R b/R new file mode 100755 index 00000000000000..146ad7015adcc6 --- /dev/null +++ b/R @@ -0,0 +1,32 @@ +#!/bin/sh + +m=$(git-rev-parse "master^0") +for branch +do + b=$(git-rev-parse "$branch^0") + case "$(git-merge-base --all "$b" "$m")" in + "$m") + echo >&2 "$branch: up to date" + continue + ;; + esac + git-show-branch "$branch" master + while : + do + echo -n >&2 "Rebase $branch [Y/n]? " + read ans + case "$ans" in + [Yy]*) + git rebase master "$branch" || exit + break + ;; + [Nn]*) + echo >&2 "Not rebasing $branch" + break + ;; + *) + echo >&2 "Sorry, I could not hear you" + ;; + esac + done +done From ffddbba38c2ace1b6fbd2b6d1ae1041faa03467b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 27 Dec 2005 00:02:08 -0800 Subject: [PATCH 0077/2612] Adjust for use on kernel.org --- DoKernelOrg | 51 +++++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 17788aa61247b9..1c10ea6f4f70d2 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -1,48 +1,43 @@ #!/bin/sh -J= -# J='-l 4 -j' -nodo=echo +J='-l 4 -j' +G=/pub/software/scm/git && cd $HOME/git && -make clean && +make clean >/dev/null 2>&1 && git reset --hard && -make clean && +make clean >/dev/null 2>&1 && git checkout master && git pull . origin && -make clean && +make clean >/dev/null 2>&1 && case "$1" in '') - make $J install && - make test && - make clean && - git checkout pu && - make $J clean && - make test clean + echo "* Building all" + { + make $J install && + make test && + make clean && + git checkout pu && + make $J clean && + make test clean + } >:all.log 2>&1 ;; maint | master) - G=/pub/software/scm/git && + mkdir -p $G/RPMS/i386 $G/RPMS/SRPMS && + echo "* Building $1" git checkout "$1" && make rpm >./:rpm.log 2>&1 && - make $J git && - V=$(./git --version | sed -e 's/git version //') && - $nodo ln git-$V.tar.gz $G/. && - D=`pwd` && - M="git-man-pages-$V" && - H="git-html-pages-$V" && - rm -rf "$M" "$H" && - make man1="$D/$M/man1" man7="$D/$M/man7" WEBDOC_DEST="$D/$H" \ - -C Documentation install install-webdoc >./:doc.log 2>&1 && - $nodo tar zcf "$G/$M".tar.gz "$M" && - $nodo tar zcf "$G/$H".tar.gz "$H" && - rm -fr "$M" "$H" ./:rpm.log ./:doc.log && + make $J git >>./:rpm.log 2>&1 && + V=`./git --version | sed -e 's/git version //'` && + ln git-$V.tar.gz $G/. && + ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. && + ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. && + rm -fr ./:rpm.log && make clean && - $nodo ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. && - $nodo ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. - ;; + : ;; esac || exit $? git checkout master From 7dc35b9485d248b109fa31d6c0edcbda4971b770 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 27 Dec 2005 00:04:15 -0800 Subject: [PATCH 0078/2612] Rewrite documentation hook --- R | 32 ----------------- dodoc.sh | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 32 deletions(-) delete mode 100755 R create mode 100755 dodoc.sh diff --git a/R b/R deleted file mode 100755 index 146ad7015adcc6..00000000000000 --- a/R +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh - -m=$(git-rev-parse "master^0") -for branch -do - b=$(git-rev-parse "$branch^0") - case "$(git-merge-base --all "$b" "$m")" in - "$m") - echo >&2 "$branch: up to date" - continue - ;; - esac - git-show-branch "$branch" master - while : - do - echo -n >&2 "Rebase $branch [Y/n]? " - read ans - case "$ans" in - [Yy]*) - git rebase master "$branch" || exit - break - ;; - [Nn]*) - echo >&2 "Not rebasing $branch" - break - ;; - *) - echo >&2 "Sorry, I could not hear you" - ;; - esac - done -done diff --git a/dodoc.sh b/dodoc.sh new file mode 100755 index 00000000000000..2bb0880265e572 --- /dev/null +++ b/dodoc.sh @@ -0,0 +1,104 @@ +#!/bin/sh +# +# This script is called from the post-update hook, and when +# the master branch is updated, run in $HOME/doc-git, like +# this: +: <<\END_OF_COMMENTARY + +$ cat >hooks/post-update +#!/bin/sh +case " $* " in +*' refs/heads/master '*) + echo $HOME/git-doc/dodoc.sh | at now + ;; +esac +exec git-update-server-info +$ chmod +x hooks/post-update + +END_OF_COMMENTARY + +# $HOME/doc-git is a clone of the git.git repository and +# has the master branch checkd out. We update the working +# tree and build pre-formatted documentation pages, install +# in doc-htmlpages and doc-manapges subdirectory here. +# These two are their own git repository, and when they are +# updated the updates are pushed back into their own branches +# in git.git repository. + +ID=`git-rev-parse --verify refs/heads/master` || exit $? + +unset GIT_DIR + +PUBLIC=/pub/software/scm/git/docs && +MASTERREPO=`pwd` && +DOCREPO=`dirname "$0"` && +test "$DOCREPO" != "" && +cd "$DOCREPO" || exit $? + +git pull "$MASTERREPO" master && +test $(git-rev-parse --verify refs/heads/master) == "$ID" || exit $? + +# Set up subrepositories +test -d doc-htmlpages || ( + mkdir doc-htmlpages && + cd doc-htmlpages && + git init-db || exit $? + + if ID=$(git fetch-pack "$MASTERREPO" html) + then + git update-ref HEAD `expr "$ID" : '\(.*\) .*'` && + git checkout || exit $? + fi +) +test -d doc-manpages || ( + mkdir doc-manpages && + cd doc-manpages && + git init-db || exit $? + + if ID=$(git fetch-pack "$MASTERREPO" man) + then + git update-ref HEAD `expr "$ID" : '\(.*\) .*'` && + git checkout || exit $? + fi +) +find doc-htmlpages doc-manpages -type d -name '.git' -prune -o \ + -type f -print0 | xargs -0 rm -f + +cd Documentation && +make WEBDOC_DEST="$DOCREPO/doc-htmlpages" install-webdoc >../:html.log 2>&1 && + +if test -d $PUBLIC +then + make WEBDOC_DEST="$PUBLIC" install-webdoc >>../:html.log 2>&1 +else + echo "* No public html at $PUBLIC" +fi || exit $? + +cd ../doc-htmlpages && + git add . && + if git commit -a -m "Autogenerated HTML docs for $ID" + then + git-send-pack "$MASTERREPO" master:refs/heads/html || { + echo "* HTML failure" + exit 1 + } + else + echo "* No changes in html docs" + fi + +cd ../Documentation && +make man1="$DOCREPO/doc-manpages/man1" man7="$DOCREPO/doc-manpages/man7" \ + install >../:man.log 2>&1 && + +cd ../doc-manpages && + git add . && + if git commit -a -m "Autogenerated man pages for $ID" + then + git-send-pack "$MASTERREPO" master:refs/heads/man || { + echo "* man failure" + exit 1 + } + else + echo "* No changes in manual pages" + fi + From d2c029c64c296201a52bd869ea1835e1a71b9f2b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 27 Dec 2005 18:19:24 -0800 Subject: [PATCH 0079/2612] KO procedure updates. --- DoKernelOrg | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 1c10ea6f4f70d2..267918d130c84b 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -15,12 +15,23 @@ case "$1" in '') echo "* Building all" { - make $J install && - make test && - make clean && - git checkout pu && - make $J clean && - make test clean + nstalled=install + for branch in naster master maint pu + do + if git-rev-parse --verify refs/heads/$branch 2>/dev/null + then + echo "** $branch **" && + git checkout $branch && + make $J $nstalled && + make test && + make clean && + nstalled=all || exit $? + else + echo + echo "* NO $branch" + echo + fi + done } >:all.log 2>&1 ;; maint | master) From 09c35ff523381f5aa21bb686f315d026cd7e248f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 27 Dec 2005 18:19:59 -0800 Subject: [PATCH 0080/2612] Need installed git to get describe version. --- Make | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Make b/Make index be6be3836bb73c..b295b2b39904e2 100755 --- a/Make +++ b/Make @@ -1,8 +1,8 @@ #!/bin/sh # DDD=' -DUSE_SYMLINK_HEAD=0' - -PATH=/usr/bin:/bin +# PATH=/usr/bin:/bin +PATH=$HOME/bin/Linux:/usr/bin:/bin LANG=C LC_CTYPE=C export PATH LANG LC_CTYPE From 2dcfb57d0b15390f9e270a7466338fdc1f74aec4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 27 Dec 2005 21:13:01 -0800 Subject: [PATCH 0081/2612] Run yummy after RPM installation. --- DoKernelOrg | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DoKernelOrg b/DoKernelOrg index 267918d130c84b..07ace9c886eb77 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -45,6 +45,9 @@ maint | master) ln git-$V.tar.gz $G/. && ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. && ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. && + { + /usr/local/bin/yummy $G/RPMS/i386 + } && rm -fr ./:rpm.log && make clean && From f0a77fd218a2c07c174aa34314e3fa160c142129 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 6 Jan 2006 21:24:51 -0800 Subject: [PATCH 0082/2612] Simplify maintainer local test & installation script. Signed-off-by: Junio C Hamano --- Doit | 61 ++++++++++++++++++++++-------------------------------------- 1 file changed, 22 insertions(+), 39 deletions(-) diff --git a/Doit b/Doit index 7c70f94ee0eae1..a210b8fd2dd23b 100755 --- a/Doit +++ b/Doit @@ -1,44 +1,27 @@ #!/bin/sh -try_if_new () { - branch="$1" - to_install="$2" - commits=$(git-rev-list "ko-${branch}..${branch}") +J='-l 2.5 -j' - to_build=no - case "$commits" in - '') - echo "* Up-to-date at ko-$branch" - to_build=no - ;; - *) - to_build=yes - ;; - esac - - case "$to_install" in - ?*) - to_build=yes - ;; - esac - - case "$to_build" in - yes) - Meta/Make clean >/dev/null 2>&1 && - git checkout "$branch" && - echo "* Testing $branch" && - Meta/Make clean test >./":${branch}.log" 2>&1 && - case "$to_install" in - ?*) - Meta/Make install >>./":${branch}.log" 2>&1 ;; - esac - esac +test -z "$(git diff --cached --name-status)" || { + echo >&2 "Repository unclean." + exit 1 } -git fetch ko && - -try_if_new maint && -try_if_new pu && -try_if_new master install && -Meta/Make clean >/dev/null 2>&1 - +nstall=install +for branch in naster master maint pu +do + rm -f ./:$branch.log && + if git rev-parse --verify refs/heads/$branch 2>/dev/null + then + echo "* $branch" && + git checkout $branch || break + { + make $J $nstall && + make test && + make clean + } >./:$branch.log && + nstall=all || exit $? + else + echo "* No $branch" + fi +done From 257a9721eb36bd5f065ee82ee9fcf9f5709ff9f2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 6 Jan 2006 21:26:33 -0800 Subject: [PATCH 0083/2612] Run yummy on SRPMS as well Signed-off-by: Junio C Hamano --- DoKernelOrg | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DoKernelOrg b/DoKernelOrg index 07ace9c886eb77..0a4d98d0891da4 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -46,7 +46,10 @@ maint | master) ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. && ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. && { + # I do not know how it exits, and I do not care much. /usr/local/bin/yummy $G/RPMS/i386 + /usr/local/bin/yummy $G/RPMS/SRPMS + : } && rm -fr ./:rpm.log && make clean && From e62284ebeb8a61c29160aac3811fa41803fbc200 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 7 Jan 2006 22:05:22 -0800 Subject: [PATCH 0084/2612] Use maintainer's own configuration. Signed-off-by: Junio C Hamano --- Doit | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Doit b/Doit index a210b8fd2dd23b..aaa1ee17fabbc6 100755 --- a/Doit +++ b/Doit @@ -16,9 +16,9 @@ do echo "* $branch" && git checkout $branch || break { - make $J $nstall && - make test && - make clean + Meta/Make $J $nstall && + Meta/Make test && + Meta/Make clean } >./:$branch.log && nstall=all || exit $? else From 63c4a8ae4530ada23fac0339f26722a136906c4c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 7 Jan 2006 22:07:13 -0800 Subject: [PATCH 0085/2612] Add Darrin Thompson Signed-off-by: Junio C Hamano --- Porcelainistas | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Porcelainistas b/Porcelainistas index 28c297f34c3006..a2747a53e209f2 100644 --- a/Porcelainistas +++ b/Porcelainistas @@ -54,3 +54,10 @@ if anybody wants to have a look. My first goal is to get object access working sanely (because that's what I need for my Python project). I haven't merged up for some time, though. + +From: Darrin Thompson +Date: Wed, 04 Jan 2006 13:51:32 -0500 +Message-Id: <1136400692.5919.11.camel@localhost.localdomain> + +I'd like to make this friendly behavior [ls-files -o not showing +contents of untracked directory] the default in my porcelain. From ba9753f70b8c638b380b058559d35935ea81c86d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 7 Jan 2006 22:11:29 -0800 Subject: [PATCH 0086/2612] Update TODO 2006-01-07 late night. --- TODO | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 4135038fb326af..b76623918983b2 100644 --- a/TODO +++ b/TODO @@ -76,7 +76,7 @@ Technical (milder) ------------------ * send-pack/receive-pack protocol updates, to allow the receiver - to report what it did to the ref update requests. + to report what it did to the ref update requests [DONE]. * Perhaps a smarter HTTP anonymous download via CGI. @@ -97,9 +97,7 @@ Technical (milder) ls-tree might be easier to use if it matched diff, not ls-files. - [We should not do this, or do this carefully, if we were to - merge the "git-checkout (--|) work from - subdirectory" patch.] + [DONE, with --full-name option like ls-files] * Any Porcelain-ish we forgot or punted to make usable from subdirectory? I think the last pass caught everything and @@ -131,15 +129,22 @@ Technical (milder) just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. +* Daemon --base-path does not apply automatically to whitelist + somehow feels wrong. If somebody cares enough, accept + patches. + Technical (trivial) ------------------- +* Daemon --base-path forbidding user-path automatically feels + wrong. If somebody cares enough, accept patches. + * Versioning scheme. The next maintenance installment will be - 1.0.3 not 1.0.0c. The next feature release would be 1.1.0. + 1.0.3 not 1.0.0c. The next feature release would be 1.1.0 [DONE]. * Either drop supporting Debian myself or coerce patches out of - the official maintainer. + the official maintainer [DONE -- DROPPED]. * We would want test scripts for the relative directory path stuff Linus has been working on. Most of the C-level From 337ceeabe13ee55d80dab89799cb0b0af2e17bb0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 7 Jan 2006 22:18:12 -0800 Subject: [PATCH 0087/2612] typofix in dodoc script. --- dodoc.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dodoc.sh b/dodoc.sh index 2bb0880265e572..82f3493e9175fe 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -1,7 +1,7 @@ #!/bin/sh # # This script is called from the post-update hook, and when -# the master branch is updated, run in $HOME/doc-git, like +# the master branch is updated, run in $HOME/git-doc, like # this: : <<\END_OF_COMMENTARY @@ -17,7 +17,7 @@ $ chmod +x hooks/post-update END_OF_COMMENTARY -# $HOME/doc-git is a clone of the git.git repository and +# $HOME/git-doc is a clone of the git.git repository and # has the master branch checkd out. We update the working # tree and build pre-formatted documentation pages, install # in doc-htmlpages and doc-manapges subdirectory here. @@ -44,9 +44,9 @@ test -d doc-htmlpages || ( cd doc-htmlpages && git init-db || exit $? - if ID=$(git fetch-pack "$MASTERREPO" html) + if SID=$(git fetch-pack "$MASTERREPO" html) then - git update-ref HEAD `expr "$ID" : '\(.*\) .*'` && + git update-ref HEAD `expr "$SID" : '\(.*\) .*'` && git checkout || exit $? fi ) @@ -55,9 +55,9 @@ test -d doc-manpages || ( cd doc-manpages && git init-db || exit $? - if ID=$(git fetch-pack "$MASTERREPO" man) + if SID=$(git fetch-pack "$MASTERREPO" man) then - git update-ref HEAD `expr "$ID" : '\(.*\) .*'` && + git update-ref HEAD `expr "$SID" : '\(.*\) .*'` && git checkout || exit $? fi ) From ceb90a511add3b362f1384aa6ea35370d12db315 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 8 Jan 2006 14:26:28 -0800 Subject: [PATCH 0088/2612] Announcement message skelton. Signed-off-by: Junio C Hamano --- Announce | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 Announce diff --git a/Announce b/Announce new file mode 100755 index 00000000000000..484412847da638 --- /dev/null +++ b/Announce @@ -0,0 +1,39 @@ +#!/bin/sh +# Announcement message skelton +# +branch=${1?branch} +previous=${2?previous} + +relname=$(git describe "$branch") && +vername=$(expr "$relname" : 'v\(.*\)') || exit $? + +git rev-parse --verify "$previous" >/dev/null || exit $? + +case "$branch" in +maint) + kind="maintenance" ;; +master) + kind="feature" ;; +esac + +cat < Date: Sun, 8 Jan 2006 17:18:32 -0800 Subject: [PATCH 0089/2612] Use describe to name the revision. --- dodoc.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dodoc.sh b/dodoc.sh index 82f3493e9175fe..8202a6047b2ea9 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -36,7 +36,9 @@ test "$DOCREPO" != "" && cd "$DOCREPO" || exit $? git pull "$MASTERREPO" master && -test $(git-rev-parse --verify refs/heads/master) == "$ID" || exit $? +test $(git-rev-parse --verify refs/heads/master) == "$ID" && +NID=$(git-describe --abbrev=4 "$ID") && +test '' != "$NID" || exit $? # Set up subrepositories test -d doc-htmlpages || ( @@ -76,7 +78,7 @@ fi || exit $? cd ../doc-htmlpages && git add . && - if git commit -a -m "Autogenerated HTML docs for $ID" + if git commit -a -m "Autogenerated HTML docs for $NID" then git-send-pack "$MASTERREPO" master:refs/heads/html || { echo "* HTML failure" @@ -92,7 +94,7 @@ make man1="$DOCREPO/doc-manpages/man1" man7="$DOCREPO/doc-manpages/man7" \ cd ../doc-manpages && git add . && - if git commit -a -m "Autogenerated man pages for $ID" + if git commit -a -m "Autogenerated man pages for $NID" then git-send-pack "$MASTERREPO" master:refs/heads/man || { echo "* man failure" From a9ce6dc595b75204857a302f9da8981c8014b5d4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 10 Jan 2006 17:44:10 -0800 Subject: [PATCH 0090/2612] reformat announce message. --- Announce | 10 ++++++---- TODO | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Announce b/Announce index 484412847da638..5e54e35a9d50bf 100755 --- a/Announce +++ b/Announce @@ -12,11 +12,15 @@ git rev-parse --verify "$previous" >/dev/null || exit $? case "$branch" in maint) kind="maintenance" ;; +mainto/*) + kind="obsolete maintenance" ;; master) kind="feature" ;; esac -cat < Date: Wed, 11 Jan 2006 01:23:49 -0800 Subject: [PATCH 0091/2612] Use gitexecdir in Make and --no-current in PU Signed-off-by: Junio C Hamano --- Make | 1 + PU | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Make b/Make index b295b2b39904e2..eb718c0ae30b42 100755 --- a/Make +++ b/Make @@ -9,6 +9,7 @@ export PATH LANG LC_CTYPE #make prefix=/usr/local \ make bindir=$HOME/bin/Linux \ + gitexecdir=$HOME/bin/Linux \ PYTHON_PATH=/usr/bin/python2.4 \ CFLAGS='-O1 -Wall -Wdeclaration-after-statement -g'"$DDD" \ WITH_SEND_EMAIL=YesPlease \ diff --git a/PU b/PU index 30cb5753d26a41..55d987b7f6f0c8 100755 --- a/PU +++ b/PU @@ -22,7 +22,7 @@ case "$#" in do I=$(($I+1)) echo -n "$I: " - git-show-branch $H + git-show-branch --no-current $H done echo -n "Merge which ones (0 to finish)? " read ans From 7442ed29c778e1e1a2f0c1cf0057207d9f319a0c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 14 Jan 2006 18:17:16 -0800 Subject: [PATCH 0092/2612] Automatically remove already merged ones. Signed-off-by: Junio C Hamano --- PU | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/PU b/PU index 55d987b7f6f0c8..7af28ac9fd0045 100755 --- a/PU +++ b/PU @@ -3,27 +3,47 @@ # Rebuild "pu" from topic branches. # -git status && exit +git-update-index --refresh || exit +case "$(git-diff-index --name-status HEAD)" in +'') ;; +*) echo 2>&1 "Local modifications exist." + exit 1;; +esac git checkout pu && git reset --hard master && ORIG_HEAD=`git rev-parse ORIG_HEAD` || exit +LF=' +' case "$#" in 0) # interactive ;-) shift HH=`cd .git/refs/heads && find -type f | - sed -e 's/^\.\///' -e '/^master$/d' -e '/^maint$/d' -e '/^pu$/d'` + sed -e 's/^\.\///' \ + -e '/^naster$/d' -e '/^master$/d' -e '/^maint$/d' -e '/^pu$/d'` while test "$HH" do I=0 echo "0: done" + NHH= for H in $HH do + HSHA1=`git-rev-parse --verify $H` || continue + MB=`git-show-branch --merge-base pu $HSHA1` + case "$LF$MB$LF" in + *"$LF$HSHA1$LF"*) continue ;; # already merged. + esac I=$(($I+1)) echo -n "$I: " - git-show-branch --no-current $H + git-show-branch $H + NHH="${NHH}$H " done + case "$I" in + 0) + break ;; + esac + HH=$NHH echo -n "Merge which ones (0 to finish)? " read ans case "$ans" in From 0f0fc5783b1620033c10b7747a2359ce3ac62978 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 14 Jan 2006 18:17:54 -0800 Subject: [PATCH 0093/2612] Make sure master <= naster <= pu, and avoid duplicate builds. Signed-off-by: Junio C Hamano --- Doit | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/Doit b/Doit index aaa1ee17fabbc6..5e14c7c169c70c 100755 --- a/Doit +++ b/Doit @@ -6,22 +6,44 @@ test -z "$(git diff --cached --name-status)" || { echo >&2 "Repository unclean." exit 1 } +Meta/Make clean >/dev/null 2>&1 + +branches='naster master maint' + +# Make sure naster is between master and pu if exists +if naster=`git rev-parse --verify refs/heads/naster 2>/dev/null` +then + master=`git rev-parse --verify refs/heads/master` && + pu=`git rev-parse --verify refs/heads/pu` && + MBM=`git merge-base --all $naster $master` && + MBN=`git merge-base --all $naster $pu` && + case ",$MBM,$MBN," in + ",$master,$naster,") ;; + *) echo >&2 "naster is not between master and pu" + exit 1 ;; + esac + # If naster is the same as pu, no point rebuilding pu. + case ",$naster,$pu," in + ",$pu,$naster,") ;; + *) branches="$branches pu" ;; + esac +fi nstall=install -for branch in naster master maint pu +for branch in $branches do - rm -f ./:$branch.log && if git rev-parse --verify refs/heads/$branch 2>/dev/null then echo "* $branch" && - git checkout $branch || break - { - Meta/Make $J $nstall && - Meta/Make test && - Meta/Make clean - } >./:$branch.log && + git checkout $branch && + Meta/Make $J all && + Meta/Make $J $nstall && + Meta/Make test && + Meta/Make clean && nstall=all || exit $? else echo "* No $branch" fi -done +done >./:all.log 2>&1 + + From 81246862e804f972136fa160ac7f08cdd1d51a59 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 14 Jan 2006 18:19:54 -0800 Subject: [PATCH 0094/2612] The same duplicate build avoidance as in Doit. Signed-off-by: Junio C Hamano --- DoKernelOrg | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/DoKernelOrg b/DoKernelOrg index 0a4d98d0891da4..16a3468641cdf3 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -14,9 +14,30 @@ make clean >/dev/null 2>&1 && case "$1" in '') echo "* Building all" + branches='naster master maint' + + # Make sure naster is between master and pu if exists + if naster=`git rev-parse --verify refs/heads/naster 2>/dev/null` + then + master=`git rev-parse --verify refs/heads/master` && + pu=`git rev-parse --verify refs/heads/pu` && + MBM=`git merge-base --all $naster $master` && + MBN=`git merge-base --all $naster $pu` && + case ",$MBM,$MBN," in + ",$master,$naster,") ;; + *) echo >&2 "naster is not between master and pu" + exit 1 ;; + esac + # If naster is the same as pu, no point rebuilding pu. + case ",$naster,$pu," in + ",$pu,$naster,") ;; + *) branches="$branches pu" ;; + esac + fi + { nstalled=install - for branch in naster master maint pu + for branch in $branches do if git-rev-parse --verify refs/heads/$branch 2>/dev/null then From 8158d510c641e2354cf24a10bc3e994c7a1e3125 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 15 Jan 2006 01:55:09 -0800 Subject: [PATCH 0095/2612] Update pu rebuilding procedure. Signed-off-by: Junio C Hamano --- PU | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PU b/PU index 7af28ac9fd0045..c96ccbc486d4c8 100755 --- a/PU +++ b/PU @@ -51,21 +51,22 @@ case "$#" in break ;; esac I=0 - UNUSE= - USE= + UNUSE= USE= USED= for H in $HH do I=$(($I+1)) case " $ans " in *' '$I' '*) USE="$USE$H " + USED="$USED,$H" ;; *) UNUSE="$UNUSE$H " ;; esac done - git pull -n . $USE || exit + USED=`expr "$USED" : ',\(.*\)'` + git merge -n "Merge $USED" pu $USE || exit HH=$UNUSE done exit From b14e2494b8a70737066f4ade4df1b5559e81b44b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 17 Jan 2006 21:42:28 -0800 Subject: [PATCH 0096/2612] TODO updates 2006-01-17. Signed-off-by: Junio C Hamano --- Make | 2 +- PU | 4 +-- TODO | 87 +++++++++++++++++++++++++++++------------------------------- 3 files changed, 45 insertions(+), 48 deletions(-) diff --git a/Make b/Make index eb718c0ae30b42..0d978a86ff57aa 100755 --- a/Make +++ b/Make @@ -11,7 +11,7 @@ export PATH LANG LC_CTYPE make bindir=$HOME/bin/Linux \ gitexecdir=$HOME/bin/Linux \ PYTHON_PATH=/usr/bin/python2.4 \ - CFLAGS='-O1 -Wall -Wdeclaration-after-statement -g'"$DDD" \ + CFLAGS='-O0 -Wall -Wdeclaration-after-statement -g'"$DDD" \ WITH_SEND_EMAIL=YesPlease \ WITH_SVNIMPORT=YesPlease \ "$@" diff --git a/PU b/PU index c96ccbc486d4c8..2fd20e8216aadf 100755 --- a/PU +++ b/PU @@ -75,7 +75,7 @@ esac for H do - (IFS=",$IFS"; git pull -n . $H) || exit + (IFS=",$IFS"; git merge -n "Merge $H" pu $H) || exit done -(IFS=",$IFS"; git show-branch master pu $* $ORIG_HEAD) +(IFS=",$IFS"; git show-branch master $* pu $ORIG_HEAD) diff --git a/TODO b/TODO index d7503d28751b73..836c8e3d05ff0e 100644 --- a/TODO +++ b/TODO @@ -20,13 +20,8 @@ patch, perhaps ;-). Documentation ------------- -* Talk about using rsync just once at the beginning when - initializing a remote repository so that local packs do not - need to be expanded. I personally do not think we need tool - support for this (but see below about optimized cloning). - -* Maybe update tutorial with a toy project that involves two or - three developers. +* Take the updated tutorial by Bruce Fields very seriously. It + is a quite good initiative. Design issues @@ -36,13 +31,13 @@ Design issues need this; just tell people to run "xxdiff -U" on the working tree files. -* Ref namespace management. Perhaps use refs/local/ suggestion - by Linus. [Does not seem to be high on people's priority list, - and not interested myself. People can resurrect this - discussion if they want.] +* Doing a merge in a separate directory. + +* Subprojects. I think the "bind commit" approach has been + outlined at sufficiently detailed level. Maybe find time to + actually start prototyping it? -* Perhaps "everything in config file"? Especially remotes/ - shortcuts. I am modestly negative about this. + <7vacdzkww3.fsf@assigned-by-dhcp.cox.net> Technical (heavier) @@ -75,29 +70,37 @@ Technical (heavier) Technical (milder) ------------------ -* send-pack/receive-pack protocol updates, to allow the receiver - to report what it did to the ref update requests [DONE]. +* Decide what to do about rebase applied to merged head. One + extreme is to allow rebase if "rev-list ours..theirs" gives + anything. This loosens the current merge-base based approach. + The other extreme is to refuse rebase if "rev-list + theirs..ours" contains any merge commit, which was discussed + on the list. + + <43CC695E.2020506@codeweavers.com> + +* Decide what the right thing to do upon an empty merge commit, + when both branches happen to have obtained the same set of + changes through different history. Not recording such keeps + the history simpler, and the next merge would soon create a + true merge commit anyway, but does not feel quite right. + + <20060114021800.4688.qmail@web31803.mail.mud.yahoo.com> * Perhaps a smarter HTTP anonymous download via CGI. * Prepare to enable "always use symbolic refs for HEAD" patch. - We need a timeline to force Porcelains to get ready. Last - time I looked at them I got an impression that gitweb was not - ready. + We need a timeline to force Porcelains to get ready. All the + major ones should be ready now. + +* Prepare to enable "most of the things are installed in + GIT_EXEC_PATH not in bindir". I do not plan to set bindir != + gitexecdir myself in the main Makefile I ship, but distos + should be able to choose to do so. * Forbid/ignore pack names that do not conform to the convention sha1_pack_name() assumes and reject in check_packed_git_idx() - [In pu] - -* strip leading directory from ls-tree output, to match ls-files - output. - - I am of two minds about this one. diff output must always be - -p1 format no matter where the command was started, and - ls-tree might be easier to use if it matched diff, not - ls-files. - - [DONE, with --full-name option like ls-files] + [In "pu"] * Any Porcelain-ish we forgot or punted to make usable from subdirectory? I think the last pass caught everything and @@ -110,11 +113,18 @@ Technical (milder) * daemon --strict-symlink. +* daemon --no-user-dir, to make ~user still work with + --base-path. They ought to be independent. + +* daemon --base-path does not apply automatically to whitelist + somehow feels wrong. If somebody cares enough, accept + patches. + * Perhaps detect cloning request in upload-pack and cache the result for next cloning request until any of our refs change. * Perhaps accept patch to optionally allow '--fuzz' in - 'git-apply'. + 'git-apply'. am/applymbox is _not_ the place to do it. * Allow 'git apply' to accept GNU diff 2.7 output that forgets to say '\No newline' if both input ends with incomplete @@ -129,28 +139,15 @@ Technical (milder) just the basename, and see the improved clustering results in better packing [Tried, but did not work out well]. -* Daemon --base-path does not apply automatically to whitelist - somehow feels wrong. If somebody cares enough, accept - patches. - Technical (trivial) ------------------- -* Daemon --base-path forbidding user-path automatically feels - wrong. If somebody cares enough, accept patches. +* s/naked/bare/g. * git-proxy should be spawned with sh -c 'command' $1 $2. -* Versioning scheme. The next maintenance installment will be - 1.0.3 not 1.0.0c. The next feature release would be 1.1.0 [DONE]. - -* Either drop supporting Debian myself or coerce patches out of - the official maintainer [DONE -- DROPPED]. - -* We would want test scripts for the relative directory path - stuff Linus has been working on. Most of the C-level - commands should be usable with relative directory paths. +* test scripts for the relative directory path stuff. * In a freshly created empty repository, `git fetch foo:bar` works OK, but `git checkout bar` afterwards does not (missing From 6f4a70cb236d34b8152f998678be10e7e173f16f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 18 Jan 2006 20:53:12 -0800 Subject: [PATCH 0097/2612] TODO: format-patch. --- TODO | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/TODO b/TODO index 836c8e3d05ff0e..a1dd9285a02329 100644 --- a/TODO +++ b/TODO @@ -39,6 +39,29 @@ Design issues <7vacdzkww3.fsf@assigned-by-dhcp.cox.net> +* Make 'format-patch' take revision limiters similar to + rev-list. For example: + + A C + ....---x---o---o---x---o---o + / + / + / + ....---x---o---o + B + + we should be able to format commits 'o', without duplicates, + by: + + $ git format-patch ^A ^B C + + Currently the closest approximation is + + $ git format-patch A..C B..C + + which results in the last two commits including C formatted + twice. + Technical (heavier) ------------------- From 18ea0bf72c0fce404e0ff3f9489b29e8dcc8beea Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 20 Jan 2006 22:55:46 -0800 Subject: [PATCH 0098/2612] Make optimization flag overridable for my compilation Signed-off-by: Junio C Hamano --- Doit | 2 +- Make | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Doit b/Doit index 5e14c7c169c70c..705e8c4b0c2171 100755 --- a/Doit +++ b/Doit @@ -1,6 +1,6 @@ #!/bin/sh -J='-l 2.5 -j' +J='-l 1.5 -j' test -z "$(git diff --cached --name-status)" || { echo >&2 "Repository unclean." diff --git a/Make b/Make index 0d978a86ff57aa..7c8b29763ea814 100755 --- a/Make +++ b/Make @@ -7,11 +7,11 @@ LANG=C LC_CTYPE=C export PATH LANG LC_CTYPE -#make prefix=/usr/local \ +: ${O=-O2} make bindir=$HOME/bin/Linux \ gitexecdir=$HOME/bin/Linux \ PYTHON_PATH=/usr/bin/python2.4 \ - CFLAGS='-O0 -Wall -Wdeclaration-after-statement -g'"$DDD" \ + CFLAGS="$O -Wall -Wdeclaration-after-statement -g" \ WITH_SEND_EMAIL=YesPlease \ WITH_SVNIMPORT=YesPlease \ "$@" From 725ca8a8e77847049630b1f409c28fb37e943dc2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 22 Jan 2006 23:53:07 -0800 Subject: [PATCH 0099/2612] Add Subproject Design Notes. Signed-off-by: Junio C Hamano --- Makefile | 11 ++ Subpro.txt | 472 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 483 insertions(+) create mode 100644 Makefile create mode 100644 Subpro.txt diff --git a/Makefile b/Makefile new file mode 100644 index 00000000000000..32c8bd857344a8 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +all: + +clean: + rm -f Subpro.html + + +all: Subpro.html + +%.html: %.txt + asciidoc -bxhtml11 $*.txt + diff --git a/Subpro.txt b/Subpro.txt new file mode 100644 index 00000000000000..8340d888cda32b --- /dev/null +++ b/Subpro.txt @@ -0,0 +1,472 @@ +Notes on Subproject Support +=========================== +Junio C Hamano + +Scenario +-------- + +The examples in the following discussion show how this proposal +plans to help this: + +. A project to build an embedded Linux appliance "gadget" is + maintained with git. + +. The project uses linux-2.6 kernel as its subcomponent. It + starts from a particular version of the mainline kernel, but + adds its own code and build infrastructure to fit the + appliance's needs. + +. The working tree of the project is laid out this way: ++ +------------ + Makefile - Builds the whole thing. + linux-2.6/ - The kernel, perhaps modified for the project. + appliance/ - Applications that run on the appliance, and + other bits. +------------ + +. The project is willing to maintain its own changes out of tree + of the Linux kernel project, but would want to be able to feed + the changes upstream, and incorporate upstream changes to its + own tree, taking advantage of the fact that both itself and + the Linux kernel project are version controlled with git. + +. To make the story a bit more interesting, later in the history + of development, `linux-2.6/` and `appliance/` directories will + be renamed to `kernel/` and `gadget/`. + +The idea here is to: + +. Keep `linux-2.6/` part as an independent project. The work by + the project on the kernel part can be naturally exchanged with + the other kernel developers this way. Specifically, a tree + object contained in commit objects belonging to this project + does *not* have `linux-2.6/` directory at the top. + +. Keep the `appliance/` part as another independent project. + Applications are supposed to be more or less independent from + the kernel version, but some other bits might be tied to a + specific kernel version. Again, a tree object contained in + commit objects belonging to this project does *not* have + `appliance/` directory at the top. + +. Have another project that combines the whole thing together, + so that the project can keep track of which versions of the + parts are built together. + +We will call the project that binds things together the +'toplevel project'. Other projects that hold `linux-2.6/` part +and `appliance/` part are called 'subprojects'. + + +Setting up +---------- + +Let's say we have been working on the appliance software, +independently version controlled with git. Also the kernel part +has been version controlled separately, like this: +------------ +$ ls -dF current/*/.git current/* +current/Makefile current/appliance/.git/ current/linux-2.6/.git/ +current/appliance/ current/linux-2.6/ +------------ + +Now we would want to get a combined project. First we would +clone from these repositories (which is not strictly needed -- +we could use `$GIT_ALTERNATE_OBJECT_DIRECTORIES` instead): + +------------ +$ mkdir combined && cd combined +$ cp ../current/Makefile . +$ git init-db +$ mkdir -p .git/refs/subs/{kernel,gadget}/{heads,tags} +$ git clone-pack ../current/linux-2.6/ master | read kernel_commit junk +$ git clone-pack ../current/appliance/ master | read gadget_commit junk +------------ + +We will introduce a new command to set up a combined project: + +------------ +$ git bind-projects \ + $kernel_commit linux-2.6/ \ + $gadget_commit appliance/ +------------ + +This would probably do an equivalent of: + +------------ +$ rm -f "$GIT_DIR/index" +$ git read-tree --prefix=linux-2.6/ $kernel_commit +$ git read-tree --prefix=appliance/ $gadget_commit +$ git update-index --bind linux-2.6/ $kernel_commit +$ git update-index --bind appliance/ $gadget_commit +------------ +[NOTE] +============ +Earlier outlines sent to the git mailing list talked +about `$GIT_DIR/bind` to record what subproject are bound to +which subtree in the current working tree and index. This +proposal instead records that information in the index file +with `update-index --bind` command. + +Also note that in this round of proposal, there is no separate +branches that keep track of heads of subprojects. +============ + +Let's not forget to add the `Makefile`, and check the whole +thing out from the index file. +------------ +$ git add Makefile +$ git checkout-index -f -u -q -a +------------ + +Now our directory should be identical with the `current` +directory. After making sure of that, we should be able to +commit the whole thing: + +------------ +$ diff -x .git -r ../current ../combined +$ git commit -m 'Initial toplevel project commit' +------------ + +Which should create a new commit object that records what is in +the index file as its tree, with `bind` lines to record which +subproject commit objects are bound at what subdirectory, and +updates the `$GIT_DIR/refs/heads/master`. Such a commit object +might look like this: +------------ +tree 04803b09c300c8325258ccf2744115acc4c57067 +bind 5b2bcc7b2d546c636f79490655b3347acc91d17f linux-2.6/ +bind 0bdd79af62e8621359af08f0afca0ce977348ac7 appliance/ +author Junio C Hamano 1137965565 -0800 +committer Junio C Hamano 1137965565 -0800 + +Initial toplevel project commit +------------ + +Notice that `Makefile` at the top is part of the toplevel +project in this example, but it is not necessary. We could +instead have the appliance subproject include this file. In +such a setup, the appliance subproject would have had `Makefile` +and `appliance/` directory at the toplevel. The `bind` line for +that project would have said "the rest is bound at `/`" and +`write-tree \--exclude=linux-2.6/` would have been used to write +the tree for that subproject out of the combined index. + + +Making further commits +---------------------- + +The easiest case is when you updated the Makefile without +changing anything in the subprojects. In such a case, we just +need to create a new commmit object that records the new tree +with the current `HEAD` as its parent, and with the same set of +`bind` lines. + +When we have changes to the subproject part, we would make a +separate commit to the subproject part and then record the whole +thing by making a commit to the toplevel project. The user +interaction might go this way: +------------ +$ git commit +error: you have changes to the subproject bound at linux-2.6/. +$ git commit --subproject linux-2.6/ +$ git commit +------------ + +With the new `\--subproject` option, the directory structure +rooted at `linux-2.6/` part is written out as a tree, and a new +commit object that records that tree object with the commit +bound to that portion of the tree (`5b2bcc7b` in the above +example) as its parent is created. Then the final `git commit` +would record the whole tree with updated `bind` line for the +`linux-2.6/` part. + + +Checking out +------------ + +After cloning such a toplevel project, `git clone` without `-n` +option would check out the working tree. This is done by +reading the tree object recorded in the commit object (which +records the whole thing), and adding the information from the +"bind" line to the index file. + +------------ +$ cd .. +$ git clone -n combined cloned ;# clone the one we created earlier +$ cd cloned +$ git checkout +------------ + +This round of proposal does not maintain separate branch heads +for subprojects. The bound commits and their subdirectories +are recorded in the index file from the commit object, so there +is no need to do anything other than updating the index and the +working tree. + + +Switching branches +------------------ + +Along with the traditional two-way merge by `read-tree -m -u`, +we would need to look at: + +. `bind` lines in the current `HEAD` commit. + +. `bind` lines in the commit we are switching to. + +. subproject binding information in the index file. + +to make sure we do sensible things. + +Just like until very recently we did not allow switching +branches when two-way merge would lose local changes, we can +start by refusing to switch branches when the subprojects bound +in the index do not match what is recorded in the `HEAD` commit. + +Because in this round of the proposal we do not use the +`$GIT_DIR/bind` file nor separate branches to keep track of +heads of the subprojects, there is nothing else other than the +working tree and the index file that needs to be updated when +switching branches. + + +Merging +------- + +Merging two branches of the toplevel projects can use the +traditional merging mechanism mostly unchanged. The merge base +computation can be done using the `parent` ancestry information +taken from the two toplevel project branch heads being merged, +and merging of the whole tree can be done with a three-way merge +of the whole tree using the merge base and two head commits. +For reasons described later, we would not merge the subproject +parts of the trees during this step, though. + +When the two branch heads use different versions of subproject, +things get a bit tricky. First, let's forget for a moment about +the case where they bind the same project at different location. +We would refuse if they do not have the same number of `bind` +lines that bind something at the same subdirectories. + +------------ +$ git merge 'Merge in a side branch' HEAD side +error: the merged heads have subprojects bound at different places. + ours: + linux-2.6/ + appliance/ + theirs: + kernel/ + gadget/ + manual/ +------------ + +Such renaming can be handled by first moving the bind points in +our branch, and redoing the merge (this is a rare operation +anyway). It might go like this: + +------------ +$ git reset +$ git update-index --unbind linux-2.6/ +$ git update-index --unbind appliance/ +$ git update-index --bind $kernel_commit kernel/ +$ git update-index --bind $gadget_commit gadget/ +$ git commit -m 'Prepare for merge with side branch' +$ git merge 'Merge in a side branch' HEAD side +error: the merged heads have subprojects bound at different places. + ours: + kernel/ + gadget/ + theirs: + kernel/ + gadget/ + manual/ +------------ + +Their branch added another subproject, so this did not work (or +it could be the other way around -- we might have been the one +with `manual/` subproject while they didn't). This suggests +that we may want an option to `git merge` to allow taking a +union of subprojects. Again, this is a rare operation, and +always taking a union would have created a toplevel project that +had both `kernel/` and `linux-2.6/` bound to the same Linux +kernel project from possibly different vintage, so it would be +prudent to require the set of bound subprojects to exactly match +and give the user an option to take a union. + +------------ +$ git merge --union-subprojects 'Merge in a side branch HEAD side +error: the subproject at 'kernel/' needs to be merged first. +------------ + +Here, the version of the Linux kernel project in the `side` +branch was different from what our branch had on our `bind` +line. On what kind of difference should we give this error? +Initially, I think we could require one is the fast forward of +the other (ours might be ahead of theirs, or the other way +around), and take the descendant. + +Or we could do an independent merge of subprojects heads, using +the `parent` ancestry of the bound subproject heads to find +their merge-base and doing a three-way merge. This would leave +the merge result in the subproject part of the working tree and +the index. + +[NOTE] +This is the reason we did not do the whole-tree three way merge +earlier. The subproject commit bound to the merge base commit +used for the toplevel project may not be the merge base between +the subproject commits bound to the two toplevel project +commits. + +So let's deal with the case to merge only a subproject part into +our tree first. + + +Merging subprojects +------------------- + +An operation of more practical importance is to be able to merge +in changes done outside to the projects bound to our toplevel +project. + +------------ +$ git pull --subproject=kernel/ git://git.kernel.org/.../linux-2.6/ +------------ + +might do: + +. fetch the current `HEAD` commit from Linus. +. find the subproject commit bound at kernel/ subtree. +. perform the usual three-way merge of these two commits, in + `kernel/` part of the working tree. + +After that, `git commit \--subproject` option would be needed to +make a commit. + +[NOTE] +This suggests that we would need to have something similar to +`MERGE_HEAD` for merging the subproject part. In the case of +merging two toplevel project commits, we probably can read the +`bind` lines from the `MERGE_HEAD` commit and either our `HEAD` +commit or our index file. Further, we probably would require +that the latter two must match, just as we currently require the +index file matches our `HEAD` commit before `git merge`. + +Just like the current `pull = fetch + merge` semantics, the +subproject aware version `git pull \--subproject=frotz/` would be +a `git fetch \--subproject=frotz/` followed by a `git merge +\--subproject=frotz/`. So the above would be: + +. Fetch the head. ++ +------------ +$ git fetch --subproject=kernel/ git://git.kernel.org/.../linux-2.6/ +------------ ++ +which would fetch the commit chain from the remote repository, and +write something like this to `FETCH_HEAD`: ++ +------------ +3ee68c4...\tfor-merge-into kernel/\tbranch 'master' of git://.../linux-2.6 +------------ + +. Run `git merge`. ++ +------------ +$ git merge --subproject=kernel/ \ + 'Merge git://.../linux-2.6 into kernel/' HEAD 3ee68c4... +------------ + +. In case it does not cleanly automerge, `git merge` would write +the necessary information for a later `git commit` to use in +`MERGE_HEAD`. It may look like this: ++ +------------ +3ee68c4af3fd7228c1be63254b9f884614f9ebb2 kernel/ +------------ ++ +Similarly, `MERGE_MSG` file will hold the merge message. + +With this, a later invocation of `git commit` to record the +result of hand resolving would be able to notice that: + +. We should be first resolving `kernel/` subproject, not the + whole thing. +. The remote `HEAD` is `3ee68c4\...` commit. +. The merge message is `Merge git://\.../linux-2.6 into kernel/`. + +and would make a merge commit, and register that resulting +commit in the index file using `update-index \--bind` instead of +updating *any* branch head. + + +Management of Subprojects +------------------------- + +While the above as a mechanism would support version controlling +of subprojects as a part of *one* larger toplevel project, it +probably is worth pointing out that having a separate repository +to manage the subproject independently would be a good idea. +The same subproject can be incorporated into more than one +toplevel projects, and after all, a subproject should be +something that can stand on its own. In our example scenario, +the `kernel/` project is used as a subproject for the "gadget" +product, but at the same time, the organizaton that runs the +"gadget" project may use Linux on their development machines, +and have their own kernel hackers, not necessarily related to +the use of the kernel in the "gadget" product. + +What this suggests is that not just we need to be able to pull +the kernel development history *into* the subproject of the +"gadget" project, but also we need to be able to push the +development history of the kernel part alone *out* *of* the +"gadget" project to another repository that deals only with the +kernel part. + +It might go this way. First the setup: + +------------ +$ git clone git://git.kernel.org/.../linux-2.6 Linux +$ ls -dF * +cloned/ combined/ current/ Linux/ +------------ + +That is, in addition to the `combined/` which we have been using +to develop the "gadget" product in, we now have a repository for +the kernel, cloned from Linus. In the previous section, we have +outlined how we update the kernel subproject part of `combined/` +repository from the `kernel.org` repository. The same procedure +would work for pulling from `Linux/` repository here. + +We are now going the other way; propagate the kernel work done +in the "gadget" project repository `combined/` back to `Linux/`. +We might do this at the lowest level: + +------------ +$ cd combined +$ git cat-file commit HEAD | + sed -ne 's|^bind \([0-9a-f]*\) kernel/$|\1|p' >.git/refs/heads/linux26 +$ git push ../Linux linux26:master +------------ + +Or, more realistically, since the `Linux` project might already +have their own commits on its `master`: + +------------ +$ cd Linux +$ git pull ../combined linux26 +------------ + +Either way we would need an easy way to maintain the `linux26` +branch in the above example, and that will have to be part of +the wrapper scripts like `git commit` (more likely, that would +be a job for `git commit \--subproject`) for the usability's +sake; in other words, the `cat-file commit` piped to `sed` above +is not something the end user would do, but something that is +done by the wrapper scripts. + +Hopefully the people who work in `Linux/` repository would run +`format-patch` and feed their changes back to the kernel +community. From b0a3de01936a39803e0e5d2d62d9c544cd126d2e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 27 Jan 2006 00:22:40 -0800 Subject: [PATCH 0100/2612] Add Aneesh Kumar's repo browser to Porcelainistas. Signed-off-by: Junio C Hamano --- Porcelainistas | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Porcelainistas b/Porcelainistas index a2747a53e209f2..e30e0495abd9c1 100644 --- a/Porcelainistas +++ b/Porcelainistas @@ -61,3 +61,13 @@ Message-Id: <1136400692.5919.11.camel@localhost.localdomain> I'd like to make this friendly behavior [ls-files -o not showing contents of untracked directory] the default in my porcelain. + + +Message-ID: +From: Aneesh Kumar +Date: Fri, 27 Jan 2006 09:16:58 +0530 + +I am right now making a gnome based git repository browser [1]. + +[1] http://www.flickr.com/photos/17388011@N00/91636482/ +This is based on bzrk GUI frontend to bazaar and written in python From a59237f5655878be68ea518ce44a8a54f18b25e3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 27 Jan 2006 22:45:08 -0800 Subject: [PATCH 0101/2612] resolve cache experiments. Signed-off-by: Junio C Hamano --- RR.perl | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100755 RR.perl diff --git a/RR.perl b/RR.perl new file mode 100755 index 00000000000000..575aa1cfbcac2f --- /dev/null +++ b/RR.perl @@ -0,0 +1,244 @@ +#!/usr/bin/perl +# +# This is an attempt to cache earlier hand resolve of conflicting +# merges and reuse them when applicable. +# +# The flow roughly goes like this: +# +# $ git pull . test +# Auto-merging frotz +# fatal: merge program failed +# Automatic merge failed; fix up by hand +# $ git rere +# Recorded preimage for 'frotz' +# $ edit frotz ;# resolve by hand +# $ git rere +# Recorded resolution for 'frotz' +# $ build/test/have fun +# $ git reset --hard ;# decide to keep working +# $ ... ;# maybe even make more commits on "master" +# +# Later +# +# $ git pull . test +# Auto-merging frotz +# fatal: merge program failed +# Automatic merge failed; fix up by hand +# $ git rere +# Resolved 'frotz' using previous resolution. +# + +use Digest; +use File::Path; +use File::Copy; + +my $git_dir = $::ENV{GIT_DIR} || ".git"; +my $rr_dir = "$git_dir/rr-cache"; +my $merge_rr = "$git_dir/rr-cache/MERGE_RR"; + +my %merge_rr = (); + +sub read_rr { + if (!-f $merge_rr) { + %merge_rr = (); + return; + } + my $in; + local $/ = "\0"; + open $in, "<$merge_rr" or die "$!: $merge_rr"; + while (<$in>) { + chomp; + my ($name, $path) = /^([0-9a-f]{40})\t(.*)$/s; + $merge_rr{$path} = $name; + } + close $in; +} + +sub write_rr { + my $out; + open $out, ">$merge_rr" or die "$!: $merge_rr"; + for my $path (sort keys %merge_rr) { + my $name = $merge_rr{$path}; + print $out "$name\t$path\0"; + } + close $out; +} + +sub compute_conflict_name { + my ($path) = @_; + my @side = (); + my $in; + open $in, "<$path" or die "$!: $path"; + + my $sha1 = Digest->new("SHA-1"); + my $hunk = 0; + while (<$in>) { + if (/^<<<<<<< .*/) { + $hunk++; + @side = ([], undef); + } + elsif (/^=======$/) { + $side[1] = []; + } + elsif (/^>>>>>>> .*/) { + my ($one, $two); + $one = join('', @{$side[0]}); + $two = join('', @{$side[1]}); + if ($two le $one) { + ($one, $two) = ($two, $one); + } + $sha1->add($one); + $sha1->add("\0"); + $sha1->add($two); + $sha1->add("\0"); + @side = (); + } + elsif (@side == 0) { + next; + } + elsif (defined $side[1]) { + push @{$side[1]}, $_; + } + else { + push @{$side[0]}, $_; + } + } + close $in; + return ($sha1->hexdigest, $hunk); +} + +sub record_preimage { + my ($path, $name) = @_; + my @side = (); + my ($in, $out); + open $in, "<$path" or die "$!: $path"; + open $out, ">$name" or die "$!: $name"; + + while (<$in>) { + if (/^<<<<<<< .*/) { + @side = ([], undef); + } + elsif (/^=======$/) { + $side[1] = []; + } + elsif (/^>>>>>>> .*/) { + my ($one, $two); + $one = join('', @{$side[0]}); + $two = join('', @{$side[1]}); + if ($two le $one) { + ($one, $two) = ($two, $one); + } + print $out "<<<<<<<\n"; + print $out $one; + print $out "=======\n"; + print $out $two; + print $out ">>>>>>>\n"; + @side = (); + } + elsif (@side == 0) { + print $out $_; + } + elsif (defined $side[1]) { + push @{$side[1]}, $_; + } + else { + push @{$side[0]}, $_; + } + } + close $out; + close $in; +} + +sub find_conflict { + my $in; + local $/ = "\0"; + open $in, '-|', qw(git ls-files -z -u) or die "$!: ls-files"; + my %path = (); + my @path = (); + while (<$in>) { + chomp; + my ($mode, $sha1, $stage, $path) = + /^([0-7]+) ([0-9a-f]{40}) ([123])\t(.*)$/s; + $path{$path} |= (1 << $stage); + } + close $in; + while (my ($path, $status) = each %path) { + if ($status == 14) { push @path, $path; } + } + return @path; +} + +sub merge { + my ($name, $path) = @_; + record_preimage($path, "$rr_dir/$name/thisimage"); + unless (system('merge', map { "$rr_dir/$name/${_}image" } + qw(this pre post))) { + my $in; + open $in, "<$rr_dir/$name/thisimage" or + die "$!: $name/thisimage"; + my $out; + open $out, ">$path" or die "$!: $path"; + while (<$in>) { print $out $_; } + close $in; + close $out; + return 1; + } + return 0; +} + +-d "$rr_dir" || exit(0); + +read_rr(); +my %conflict = map { $_ => 1 } find_conflict(); + +# MERGE_RR records paths with conflicts immediately after merge +# failed. Some of the conflicted paths might have been hand resolved +# in the working tree since then, but the initial run would catch all +# and register their preimages. + +for my $path (keys %conflict) { + # This path has conflict. If it is not recorded yet, + # record the pre-image. + if (!exists $merge_rr{$path}) { + my ($name, $hunk) = compute_conflict_name($path); + next unless ($hunk); + $merge_rr{$path} = $name; + if (! -d "$rr_dir/$name") { + mkpath("$rr_dir/$name", 0, 0777); + print STDERR "Recorded preimage for '$path'\n"; + record_preimage($path, "$rr_dir/$name/preimage"); + } + } +} + +# Now some of the paths that had conflicts earlier might have been +# hand resolved. Others may be similar to a conflict already that +# was resolved before. + +for my $path (keys %merge_rr) { + my $name = $merge_rr{$path}; + + # We could resolve this automatically if we have images. + if (-f "$rr_dir/$name/preimage" && + -f "$rr_dir/$name/postimage") { + if (merge($name, $path)) { + print STDERR "Resolved '$path' using previous resolution.\n"; + # Then we do not have to worry about this path + # anymore. + delete $merge_rr{$path}; + next; + } + } + + # Let's see if we have resolved it. + (undef, my $hunk) = compute_conflict_name($path); + next if ($hunk); + + print STDERR "Recorded resolution for '$path'.\n"; + copy($path, "$rr_dir/$name/postimage"); + # And we do not have to worry about this path anymore. + delete $merge_rr{$path}; +} + +# Write out the rest. +write_rr(); From cc68633578c1c7f23fe249731a90eff94f17fda2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 2 Feb 2006 01:41:34 -0800 Subject: [PATCH 0102/2612] TODO updates --- PU | 2 +- TODO | 68 +++++++++++++++++++++++++++++++++++++++--------------------- 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/PU b/PU index 2fd20e8216aadf..2124b05222c087 100755 --- a/PU +++ b/PU @@ -78,4 +78,4 @@ do (IFS=",$IFS"; git merge -n "Merge $H" pu $H) || exit done -(IFS=",$IFS"; git show-branch master $* pu $ORIG_HEAD) +(IFS=",$IFS"; git show-branch master $* pu `git rev-parse --short $ORIG_HEAD`) diff --git a/TODO b/TODO index a1dd9285a02329..73ab4c63ab4bce 100644 --- a/TODO +++ b/TODO @@ -20,25 +20,26 @@ patch, perhaps ;-). Documentation ------------- -* Take the updated tutorial by Bruce Fields very seriously. It - is a quite good initiative. +* No pending issues at the moment. "Revamp Tutorial" initiative + by Bruce Fields ongoing and things are looking better. Design issues ------------- +* Rehash "git commit" with various parameters to be more + intuitive without breaking traditinal users too much. We need + to phase this in, especially if we are going to change "git + commit" to imply the current "git commit -a" behaviour. + +* "intent to add" index entries. + * Plug-in file-level merges. On the other hand, we may not even need this; just tell people to run "xxdiff -U" on the working tree files. * Doing a merge in a separate directory. -* Subprojects. I think the "bind commit" approach has been - outlined at sufficiently detailed level. Maybe find time to - actually start prototyping it? - - <7vacdzkww3.fsf@assigned-by-dhcp.cox.net> - * Make 'format-patch' take revision limiters similar to rev-list. For example: @@ -93,6 +94,39 @@ Technical (heavier) Technical (milder) ------------------ +* Subprojects. I think the "bind commit" approach has been + outlined at sufficiently detailed level. Maybe find time to + actually start prototyping it? + + <7vacdzkww3.fsf@assigned-by-dhcp.cox.net> + +* Shallow clones. + +* Mark entries as "assume unchanged" in the index. + New option to update-index to set or drop the bit is needed. + + - update-index --no-stat paths... + - update-index --with-stat paths... + + Also a config item '[core] trust_stat = false' would enable + this automatically: + + - "update-index" with or without --add would mark the path + after registering. Should we make the working tree file + read-only at this point? + + - checkout-index -u would mark the path and makes the working + tree file read-only. + + Impacts to various commands: + + - update-index --refresh would ignore them. + + - diff-files would say unchanged. + + - diff-index without --cached acts the same way as diff-index + --cached. + * Decide what to do about rebase applied to merged head. One extreme is to allow rebase if "rev-list ours..theirs" gives anything. This loosens the current merge-base based approach. @@ -106,7 +140,7 @@ Technical (milder) when both branches happen to have obtained the same set of changes through different history. Not recording such keeps the history simpler, and the next merge would soon create a - true merge commit anyway, but does not feel quite right. + true merge commit anyway, but this does not feel quite right. <20060114021800.4688.qmail@web31803.mail.mud.yahoo.com> @@ -116,20 +150,6 @@ Technical (milder) We need a timeline to force Porcelains to get ready. All the major ones should be ready now. -* Prepare to enable "most of the things are installed in - GIT_EXEC_PATH not in bindir". I do not plan to set bindir != - gitexecdir myself in the main Makefile I ship, but distos - should be able to choose to do so. - -* Forbid/ignore pack names that do not conform to the convention - sha1_pack_name() assumes and reject in check_packed_git_idx() - [In "pu"] - -* Any Porcelain-ish we forgot or punted to make usable from - subdirectory? I think the last pass caught everything and - what are remaining are whole-tree or whole repository - operations. - * diff stopping at the first output; qgit wants to know if this tree has any A or D from the other tree and nothing else. Would help internal tree-diff in rev-list as well. @@ -166,7 +186,7 @@ Technical (milder) Technical (trivial) ------------------- -* s/naked/bare/g. +* Use parent info in 'diff-tree --stdin'. * git-proxy should be spawned with sh -c 'command' $1 $2. From 1e9640502881d95cec3ff6e06f6dc68d33cbc86e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 4 Feb 2006 00:08:13 -0800 Subject: [PATCH 0103/2612] Use 'git pull' in Meta/PU That way I'd get nicely formatted merge messages. --- PU | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/PU b/PU index 2124b05222c087..2a22632a82aefe 100755 --- a/PU +++ b/PU @@ -66,7 +66,8 @@ case "$#" in esac done USED=`expr "$USED" : ',\(.*\)'` - git merge -n "Merge $USED" pu $USE || exit + git pull -n . $USE || exit + # git merge -n "Merge $USED" pu $USE || exit HH=$UNUSE done exit @@ -75,7 +76,8 @@ esac for H do - (IFS=",$IFS"; git merge -n "Merge $H" pu $H) || exit +# (IFS=",$IFS"; git merge -n "Merge $H" pu $H) || exit + (IFS=",$IFS"; git pull -n . $H) || exit done (IFS=",$IFS"; git show-branch master $* pu `git rev-parse --short $ORIG_HEAD`) From 98e455ea2262a4e935498560d0483b019b54c523 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 4 Feb 2006 20:52:26 -0800 Subject: [PATCH 0104/2612] kernel.org build is now x86_64 --- DoKernelOrg | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 16a3468641cdf3..c8fc02052c03ad 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -56,7 +56,8 @@ case "$1" in } >:all.log 2>&1 ;; maint | master) - mkdir -p $G/RPMS/i386 $G/RPMS/SRPMS && + arch=x86_64 + mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && echo "* Building $1" git checkout "$1" && @@ -64,11 +65,11 @@ maint | master) make $J git >>./:rpm.log 2>&1 && V=`./git --version | sed -e 's/git version //'` && ln git-$V.tar.gz $G/. && - ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. && + ln $HOME/rpms/RPMS/$arch/git*-$V-* $G/RPMS/$arch/. && ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. && { # I do not know how it exits, and I do not care much. - /usr/local/bin/yummy $G/RPMS/i386 + /usr/local/bin/yummy $G/RPMS/$arch /usr/local/bin/yummy $G/RPMS/SRPMS : } && From df5cc80ec929c9a10b6e71e4f10b3c6085d67b23 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 8 Feb 2006 22:08:30 -0800 Subject: [PATCH 0105/2612] Introduce an easier to follow "next" branch. The "pu" branch is a bit too hard to follow. Let's introduce "next" branch, which is slightly ahead of "master". The topic branches merged into it are not to be rebased, and changes to the topic branches are first applied to them and then merged into the "next" branch. What this means is that the branch is far easier to follow compared to the "pu" branch since there will be no rewinding/rebasing involved. --- DoKernelOrg | 59 +++++++++++++++++------------------------------------ Doit | 23 +++------------------ 2 files changed, 22 insertions(+), 60 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index c8fc02052c03ad..93426523da2f1a 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -14,47 +14,26 @@ make clean >/dev/null 2>&1 && case "$1" in '') echo "* Building all" - branches='naster master maint' - - # Make sure naster is between master and pu if exists - if naster=`git rev-parse --verify refs/heads/naster 2>/dev/null` - then - master=`git rev-parse --verify refs/heads/master` && - pu=`git rev-parse --verify refs/heads/pu` && - MBM=`git merge-base --all $naster $master` && - MBN=`git merge-base --all $naster $pu` && - case ",$MBM,$MBN," in - ",$master,$naster,") ;; - *) echo >&2 "naster is not between master and pu" - exit 1 ;; - esac - # If naster is the same as pu, no point rebuilding pu. - case ",$naster,$pu," in - ",$pu,$naster,") ;; - *) branches="$branches pu" ;; - esac - fi - - { - nstalled=install - for branch in $branches - do - if git-rev-parse --verify refs/heads/$branch 2>/dev/null - then - echo "** $branch **" && - git checkout $branch && - make $J $nstalled && - make test && - make clean && - nstalled=all || exit $? - else - echo - echo "* NO $branch" - echo - fi - done - } >:all.log 2>&1 + branches='next master maint' + nstalled=install + for branch in $branches + do + if git-rev-parse --verify refs/heads/$branch 2>/dev/null + then + echo "** $branch **" && + git checkout $branch && + make $J $nstalled && + make test && + make clean && + nstalled=all || exit $? + else + echo + echo "* NO $branch" + echo + fi + done >:all.log 2>&1 ;; + maint | master) arch=x86_64 mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && diff --git a/Doit b/Doit index 705e8c4b0c2171..a9f91a6e9c6565 100755 --- a/Doit +++ b/Doit @@ -8,26 +8,7 @@ test -z "$(git diff --cached --name-status)" || { } Meta/Make clean >/dev/null 2>&1 -branches='naster master maint' - -# Make sure naster is between master and pu if exists -if naster=`git rev-parse --verify refs/heads/naster 2>/dev/null` -then - master=`git rev-parse --verify refs/heads/master` && - pu=`git rev-parse --verify refs/heads/pu` && - MBM=`git merge-base --all $naster $master` && - MBN=`git merge-base --all $naster $pu` && - case ",$MBM,$MBN," in - ",$master,$naster,") ;; - *) echo >&2 "naster is not between master and pu" - exit 1 ;; - esac - # If naster is the same as pu, no point rebuilding pu. - case ",$naster,$pu," in - ",$pu,$naster,") ;; - *) branches="$branches pu" ;; - esac -fi +branches='next master maint' nstall=install for branch in $branches @@ -46,4 +27,6 @@ do fi done >./:all.log 2>&1 +git checkout master + From 1d0a93105b2b2f6821e2b13a88869bad1a2358f9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 8 Feb 2006 22:09:12 -0800 Subject: [PATCH 0106/2612] TODO updates. --- TODO | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/TODO b/TODO index 73ab4c63ab4bce..a38f6ebe476a92 100644 --- a/TODO +++ b/TODO @@ -94,6 +94,8 @@ Technical (heavier) Technical (milder) ------------------ +* "git status -v" to give commit preview. + * Subprojects. I think the "bind commit" approach has been outlined at sufficiently detailed level. Maybe find time to actually start prototyping it? @@ -103,21 +105,22 @@ Technical (milder) * Shallow clones. * Mark entries as "assume unchanged" in the index. - New option to update-index to set or drop the bit is needed. - - update-index --no-stat paths... - - update-index --with-stat paths... + - Also a config item '[core] trust_stat = false' would enable - this automatically: + A config item '[core] trust_stat = false' would cause to: - "update-index" with or without --add would mark the path - after registering. Should we make the working tree file - read-only at this point? + valid after registering. Should we make the working tree + file read-only at this point? - checkout-index -u would mark the path and makes the working tree file read-only. + - read-tree without -u would mark the path invalid. + + - update-index --refresh should *not* mark up-to-date paths valid. + Impacts to various commands: - update-index --refresh would ignore them. @@ -146,19 +149,12 @@ Technical (milder) * Perhaps a smarter HTTP anonymous download via CGI. -* Prepare to enable "always use symbolic refs for HEAD" patch. - We need a timeline to force Porcelains to get ready. All the - major ones should be ready now. - * diff stopping at the first output; qgit wants to know if this tree has any A or D from the other tree and nothing else. Would help internal tree-diff in rev-list as well. * daemon --strict-symlink. -* daemon --no-user-dir, to make ~user still work with - --base-path. They ought to be independent. - * daemon --base-path does not apply automatically to whitelist somehow feels wrong. If somebody cares enough, accept patches. @@ -186,8 +182,6 @@ Technical (milder) Technical (trivial) ------------------- -* Use parent info in 'diff-tree --stdin'. - * git-proxy should be spawned with sh -c 'command' $1 $2. * test scripts for the relative directory path stuff. From 2f1750a1f98ac60297dec2f7eb74caac67d6c59e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 13 Feb 2006 02:46:26 -0800 Subject: [PATCH 0107/2612] Snapshot after 1.2.0 release --- KO | 7 +-- TO | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+), 3 deletions(-) create mode 100755 TO diff --git a/KO b/KO index c39564f9cf758c..546069915c7ea2 100755 --- a/KO +++ b/KO @@ -11,6 +11,7 @@ then echo "OOOOOPPPPPPPPPPPPPPSSS! master is not ko-master fast forward." exit 1 fi -git show-branch ko-master master -git show-branch ko-maint maint -git show-branch ko-pu pu +git show-branch --topo-order ko-master master +git show-branch --topo-order ko-maint maint +git show-branch --topo-order ko-next next +git show-branch --topo-order ko-pu pu diff --git a/TO b/TO new file mode 100755 index 00000000000000..abc932e8135fc4 --- /dev/null +++ b/TO @@ -0,0 +1,150 @@ +#!/bin/sh + +clean= +case "$1" in +--clean) + branch=`git symbolic-ref HEAD` && + test refs/heads/master = "$branch" || { + echo >&2 Not on master + exit 1 + } + clean=t + shift + ;; +esac + +LF=' +' +(cd .git/refs/heads && find -type f) | +sed -n \ + -e 's/^\.\///' \ + -e '/^[^\/][^\/]\//p' | +while read topic +do + rebase= done= not_done= trouble= + + # (1) + only_next_1=`git-rev-list ^master "^$topic" next | sort` + only_next_2=`git-rev-list ^master next | sort` + if test "$only_next_1" = "$only_next_2" + then + not_in_topic=`git-rev-list "^$topic" master` + if test -z "$not_in_topic" + then + rebase=" (vanilla)" + else + rebase=" (can be rebased)" + fi + fi + + # (2) + not_in_master=` + git-rev-list --pretty=oneline ^master "$topic" | + sed -e 's/^[0-9a-f]* //' + ` + test -z "$not_in_master" && + done="${LF}Fully merged -- delete." + + # (3) + not_in_next=` + git-rev-list --pretty=oneline ^next "$topic" | + sed -e 's/^[0-9a-f]* / - /' + ` + if test -n "$not_in_next" + then + if test -n "$done" + then + trouble="${LF}### MODIFIED AFTER COOKED ###" + fi + not_done="${LF}Still not merged in next$rebase.$LF$not_in_next" + elif test -n "$done" + then + not_done= + else + not_done="${LF}Up to date." + fi + + echo "*** $topic ***$trouble$done$not_done" + + if test -z "$trouble$not_done" && + test -n "$done" && + test t = "$clean" + then + git branch -d "$topic" + fi +done + +exit + +################################################################ +Using Topic Branches + +Some important disciplines first. + + * Once a topic branch forks from "master", never merge "master" + updates into the topic branch. + + * Once a topic branch is fully cooked and merged into "master", + delete it. If you need to build on top of it to correct + earlier mistakes, create a new topic branch by forking at the + tip of the "master". This is not strictly necessary, but it + makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +So, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up, and things that have not been merged into other + branches can be easily rebased without affecting others. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you can tell you + should not build on top of it. + +(3) ... if a topic branch has commits unmerged to "next". You + need to merge them to test and/or publish. + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +To compute (1): + + git-rev-list ^master ^topic next + git-rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git-rev-list master..topic + + if this is empty, it is fully merged to "master". + +To compute (3): + + git-rev-list next..topic + + if this is empty, there is nothing to merge to "next". + From 8cbf8eaf63d7888cd459762102d0d3af71ea6fa6 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 14 Feb 2006 18:00:34 -0800 Subject: [PATCH 0108/2612] Update TO script, and also some UI issues. --- TO | 44 ++++++++++++++++++++++++++++++-------------- TODO | 17 +++++++++++++++++ 2 files changed, 47 insertions(+), 14 deletions(-) diff --git a/TO b/TO index abc932e8135fc4..6fb392433fdd5d 100755 --- a/TO +++ b/TO @@ -1,17 +1,33 @@ #!/bin/sh -clean= -case "$1" in ---clean) - branch=`git symbolic-ref HEAD` && - test refs/heads/master = "$branch" || { - echo >&2 Not on master +clean= next=next +while case $# in 0) break ;; esac +do + case "$1" in + --clean) + branch=`git symbolic-ref HEAD` && + test refs/heads/master = "$branch" || { + echo >&2 Not on master + exit 1 + } + clean=t + ;; + --next) + test 2 -le $# || { + echo >&2 "Need argument" + exit 1 + } + next="$2" + git rev-parse --verify "$next" >/dev/null || exit + shift + ;; + *) + echo >&2 "$0 [--clean | --next test-next ]" exit 1 - } - clean=t + ;; + esac shift - ;; -esac +done LF=' ' @@ -24,8 +40,8 @@ do rebase= done= not_done= trouble= # (1) - only_next_1=`git-rev-list ^master "^$topic" next | sort` - only_next_2=`git-rev-list ^master next | sort` + only_next_1=`git-rev-list ^master "^$topic" ${next} | sort` + only_next_2=`git-rev-list ^master ${next} | sort` if test "$only_next_1" = "$only_next_2" then not_in_topic=`git-rev-list "^$topic" master` @@ -47,7 +63,7 @@ do # (3) not_in_next=` - git-rev-list --pretty=oneline ^next "$topic" | + git-rev-list --pretty=oneline ^${next} "$topic" | sed -e 's/^[0-9a-f]* / - /' ` if test -n "$not_in_next" @@ -56,7 +72,7 @@ do then trouble="${LF}### MODIFIED AFTER COOKED ###" fi - not_done="${LF}Still not merged in next$rebase.$LF$not_in_next" + not_done="${LF}Still not merged in ${next}$rebase.$LF$not_in_next" elif test -n "$done" then not_done= diff --git a/TODO b/TODO index a38f6ebe476a92..8b5dd0f047f70f 100644 --- a/TODO +++ b/TODO @@ -24,6 +24,23 @@ Documentation by Bruce Fields ongoing and things are looking better. +UI +-- + +* Make "git branch -d foo" while on foo branch suggest "maybe + you want to go back to 'master'?" + +* Error message from "git checkout -b bar v2.6.10" should assume + v2.6.10 is an attempt to switch to a new branch based on + mistyped tag, not an attempt to revert path v2.6.10 from the + HEAD commit with extra "make and switch to this branch" + argument. + +* "git commit [-i|-o] paths..." with misspelled paths would be + silently ignored. Add a flag to ls-files to catch unmatched + pathspec to prevent this. + + Design issues ------------- From 99bd27ebe745c56f6a43ce342d5f803a8ab9e9d0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 16 Feb 2006 01:32:23 -0800 Subject: [PATCH 0109/2612] Update TOpic script to show how old they are. Signed-off-by: Junio C Hamano --- ClonePlus.txt | 125 +++++++++++++++++++++++++++++++++++++++++++++ ResettingPaths.txt | 64 +++++++++++++++++++++++ TO | 16 +++--- 3 files changed, 199 insertions(+), 6 deletions(-) create mode 100644 ClonePlus.txt create mode 100644 ResettingPaths.txt diff --git a/ClonePlus.txt b/ClonePlus.txt new file mode 100644 index 00000000000000..7417623aae629d --- /dev/null +++ b/ClonePlus.txt @@ -0,0 +1,125 @@ +From: Junio C Hamano +Subject: Re: Make "git clone" less of a deathly quiet experience +Date: Sun, 12 Feb 2006 19:36:41 -0800 +Message-ID: <7v4q3453qu.fsf@assigned-by-dhcp.cox.net> +References: + <7vwtg2o37c.fsf@assigned-by-dhcp.cox.net> + + <1139685031.4183.31.camel@evo.keithp.com> <43EEAEF3.7040202@op5.se> + <1139717510.4183.34.camel@evo.keithp.com> + <46a038f90602121806jfcaac41tb98b8b4cd4c07c23@mail.gmail.com> +Content-Type: text/plain; charset=us-ascii +Cc: Keith Packard , Andreas Ericsson , + Linus Torvalds , + Git Mailing List , + Petr Baudis +Return-path: +In-Reply-To: <46a038f90602121806jfcaac41tb98b8b4cd4c07c23@mail.gmail.com> + (Martin Langhoff's message of "Mon, 13 Feb 2006 15:06:42 +1300") + +Martin Langhoff writes: + +> +1... there should be an easy-to-compute threshold trigger to say -- +> hey, let's quit being smart and send this client the packs we got and +> get it over with. Or perhaps a client flag so large projects can +> recommend that uses do their initial clone with --gimme-all-packs? + +What upload-pack does boils down to: + + * find out the latest of what client has and what client asked. + + * run "rev-list --objects ^client ours" to make a list of + objects client needs. The actual command line has multiple + "clients" to exclude what is unneeded to be sent, and + multiple "ours" to include refs asked. When you are doing + a full clone, ^client is empty and ours is essentially + --all. + + * feed that output to "pack-objects --stdout" and send out + the result. + +If you run this command: + + $ git-rev-list --objects --all | + git-pack-objects --stdout >/dev/null + +It would say some things. The phases of operations are: + + Generating pack... + Counting objects XXXX... + Done counting XXXX objects. + Packing XXXXX objects..... + +Phase (1). Between the time it says "Generating pack..." upto +"Done counting XXXX objects.", the time is spent by rev-list to +list up all the objects to be sent out. + +Phase (2). After that, it tries to make decision what object to +delta against what other object, while twenty or so dots are +printed after "Packing XXXXX objects." (see #git irc log a +couple of days ago; Linus describes how pack building works). + +Phase (3). After the dot stops, the program becomes silent. +That is where it actually does delta compression and writeout. + +You would notice that quite a lot of time is spent in all +phases. + +There is an internal hook to create full repository pack inside +upload-pack (which is what runs on the other end when you run +fetch-pack or clone-pack), but it works slightly differently +from what you are suggesting, in that it still tries to do the +"correct" thing. It still runs "rev-list --objects --all", so +"dangling objects" are never sent out. + +We could cheat in all phases to speed things up, at the expense +of ending up sending excess objects. So let's pretend we +decided to treat everything in .git/objects/packs/pack-* (and +the ones found in alternates as well) have interesting objects +for the cloner. + +(1) This part unfortunately cannot be totally eliminated. By + assume all packs are interesting, we could use the object + names from the pack index, which is a lot cheaper than + rev-list object traversal. We still need to run rev-list + --objects --all --unpacked to pick up loose objects we would + not be able to tell by looking at the pack index to cover + the rest. + + This however needs to be done in conjunction with the second + phase change. pack-objects depends on the hint rev-list + --objects output gives it to group the blobs and trees with + the same pathnames together, and that greatly affects the + packing efficiency. Unfortunately pack index does not have + that information -- it does not know type, nor pathnames. + Type is relatively cheap to obtain but pathnames for blob + objects are inherently unavailable. + +(2) This part can be mostly eliminated for already packed + objects, because we have already decided to cheat by sending + everything, so we can just reuse how objects are deltified + in existing packs. It still needs to be done for loose + objects we collected to fill the gap in (1). + +(3) This also can be sped up by reusing what are already in + packs. Pack index records starting (but not end) offset of + each object in the pack, so we can sort by offset to find + out which part of the existing pack corresponds to what + object, to reorder the objects in the final pack. This + needs to be done somewhat carefully to preserve the locality + of objects (again, see #git log). The deltifying and + compressing for loose objects cannot be avoided. + + While we are writing things out in (3), we need to keep + track of running SHA1 sum of what we write out so that we + can fill out the correct checksum at the end, but I am + guessing that is relatively cheap compared to the + deltification and compression cost we are currently paying + in this phase. + +NB. In the #git log, Linus made it sound like I am clueless +about how pack is generated, but if you check commit 9d5ab96, +the "recency of delta is inherited from base", one of the tricks +that have a big performance impact, was done by me ;-). + + diff --git a/ResettingPaths.txt b/ResettingPaths.txt new file mode 100644 index 00000000000000..d101814e00ce87 --- /dev/null +++ b/ResettingPaths.txt @@ -0,0 +1,64 @@ +From: Junio C Hamano +Subject: Resetting paths +Date: Thu, 09 Feb 2006 20:40:15 -0800 +Message-ID: <7vlkwjzv0w.fsf@assigned-by-dhcp.cox.net> +Content-Type: text/plain; charset=us-ascii +Return-path: + +While working on "assume unchanged" git series, I found one +thing missing from the current set of tools. + +While I worked on parts of the system that deals with the cached +lstat() information, I needed a way to debug that, so I hacked +ls-files -t option to show entries marked as "always matches the +index" with lowercase tag letters. This was primarily debugging +aid hack. + +Then I committed the whole thing with "git commit -a" by +mistake. In order to rewind the HEAD to pre-commit state, I can +say "git reset --soft HEAD^", but after doing that, now I want +to unupdate the index so that ls-files.c matches the pre-commit +HEAD. + +"git reset --mixed" is a heavy-handed tool for that. It reads +the entier index from the HEAD commit without touching the +working tree, so I would need to add the modified paths back +with "git update-index". + +The low-level voodoo to do so for this particular case is this +single liner: + + git ls-tree HEAD ls-files.c | git update-index --index-info + +Have people found themselves in similar need like this? This +could take different forms. + + * you did "git update-index" on a wrong path. This is my + example and the above voodoo is a recipe for recovery. + + * you did "git add" on a wrong path and you want to remove it. + This is easier than the above: + + git update-index --force-remove path + + * you did the above recovery from "git add" on a wrong path, + and you want to add it again. The same voodoo would work in + this case as well. + + git ls-tree HEAD path | git update-index --index-info + +We could add "git reset path..." to reduce typing for the above, +but I am wondering if it is worth it. + +BTW, this shows how "index centric" git is. With other SCM that +has only the last commit and the working tree files, you do not +have to worry any of these things, so it might appear that index +is just a nuisance. But if you do not have any "registry of +paths to be committed", you cannot do a partial commit like what +I did above ("commit changes to all files other than +ls-files.c") without listing all the paths to be committed, or +fall back on CVS style "one path at a time", breaking an atomic +commit, so there is a drawback for not having an index as well. + + + diff --git a/TO b/TO index 6fb392433fdd5d..e8e17f492abf99 100755 --- a/TO +++ b/TO @@ -37,7 +37,7 @@ sed -n \ -e '/^[^\/][^\/]\//p' | while read topic do - rebase= done= not_done= trouble= + rebase= done= not_done= trouble= date= # (1) only_next_1=`git-rev-list ^master "^$topic" ${next} | sort` @@ -55,16 +55,14 @@ do # (2) not_in_master=` - git-rev-list --pretty=oneline ^master "$topic" | - sed -e 's/^[0-9a-f]* //' + git-rev-list ^master "$topic" ` test -z "$not_in_master" && done="${LF}Fully merged -- delete." # (3) not_in_next=` - git-rev-list --pretty=oneline ^${next} "$topic" | - sed -e 's/^[0-9a-f]* / - /' + git-rev-list --pretty=oneline ^${next} "$topic" ` if test -n "$not_in_next" then @@ -72,6 +70,12 @@ do then trouble="${LF}### MODIFIED AFTER COOKED ###" fi + last=`expr "$not_in_next" : '\([0-9a-f]*\) '` + date=` + git-rev-list -1 --pretty "$last" | + sed -ne 's/^Date: *\(.*\)/ (\1)/p' + ` + not_in_next=`echo "$not_in_next" | sed -e 's/^[0-9a-f]* / - /'` not_done="${LF}Still not merged in ${next}$rebase.$LF$not_in_next" elif test -n "$done" then @@ -80,7 +84,7 @@ do not_done="${LF}Up to date." fi - echo "*** $topic ***$trouble$done$not_done" + echo "*** $topic ***$date$trouble$done$not_done" if test -z "$trouble$not_done" && test -n "$done" && From ba296ff54e6af9f93fbb097967cded3d4f40b7b7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 18 Feb 2006 23:06:21 -0800 Subject: [PATCH 0110/2612] Update TOpic to show dates for everybody. --- TO | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/TO b/TO index e8e17f492abf99..1ac8fb868d82a5 100755 --- a/TO +++ b/TO @@ -29,6 +29,7 @@ do shift done +master_sha1=`git rev-parse --verify refs/heads/master` LF=' ' (cd .git/refs/heads && find -type f) | @@ -38,7 +39,12 @@ sed -n \ while read topic do rebase= done= not_done= trouble= date= + topic_sha1=`git rev-parse --verify "refs/heads/$topic"` + date=` + git-rev-list -1 --pretty "$topic" | + sed -ne 's/^Date: *\(.*\)/ (\1)/p' + ` # (1) only_next_1=`git-rev-list ^master "^$topic" ${next} | sort` only_next_2=`git-rev-list ^master ${next} | sort` @@ -62,20 +68,18 @@ do # (3) not_in_next=` - git-rev-list --pretty=oneline ^${next} "$topic" + git-rev-list --pretty=oneline ^${next} "$topic" | + sed -e 's/^[0-9a-f]* / - /' ` if test -n "$not_in_next" then if test -n "$done" then + # If $topic and master are the same, + # it is fine. + test "$master_sha1" = "$topic_sha1" || trouble="${LF}### MODIFIED AFTER COOKED ###" fi - last=`expr "$not_in_next" : '\([0-9a-f]*\) '` - date=` - git-rev-list -1 --pretty "$last" | - sed -ne 's/^Date: *\(.*\)/ (\1)/p' - ` - not_in_next=`echo "$not_in_next" | sed -e 's/^[0-9a-f]* / - /'` not_done="${LF}Still not merged in ${next}$rebase.$LF$not_in_next" elif test -n "$done" then From 0391212b73371b839c601079ef1393d6cd71868f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 19 Feb 2006 00:38:06 -0800 Subject: [PATCH 0111/2612] Two more maintainer scripts. --- SA | 6 ++++++ WI | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100755 SA create mode 100755 WI diff --git a/SA b/SA new file mode 100755 index 00000000000000..92dc6f49f86268 --- /dev/null +++ b/SA @@ -0,0 +1,6 @@ +#!/bin/sh +# Take a snapshot of master and next *after* making an +# "What's in git.git" announcement, for the next round. + +git tag -f sa/next refs/heads/next +git tag -f sa/master refs/heads/master diff --git a/WI b/WI new file mode 100755 index 00000000000000..c68e02de44d53c --- /dev/null +++ b/WI @@ -0,0 +1,20 @@ +#!/bin/sh +# Prepare "What's in git.git" + +has_msg=' has these since the last announcement.' +in_addition= +for m in master next pu +do + tagged=`git rev-parse --not --verify tags/sa/$m 2>/dev/null` + list=`git-rev-list $in_addition $tagged heads/$m 2>/dev/null` && + test -n "$list" || continue + + echo "* The '$m' branch$has_msg" + echo + git log $in_addition $tagged heads/$m | + git shortlog + echo + + in_addition="$in_addition ^heads/$m" + has_msg=', in addition, has these.' +done From f00c80b8715ac45ba4e8f96c7dad963b6203e7e8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 19 Feb 2006 00:54:54 -0800 Subject: [PATCH 0112/2612] Minor fix for WI script --- WI | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/WI b/WI index c68e02de44d53c..60ee92c23ac306 100755 --- a/WI +++ b/WI @@ -5,7 +5,9 @@ has_msg=' has these since the last announcement.' in_addition= for m in master next pu do - tagged=`git rev-parse --not --verify tags/sa/$m 2>/dev/null` + tagged=`git rev-parse --not --verify tags/sa/$m 2>/dev/null` || + test "$m" != pu || exit + list=`git-rev-list $in_addition $tagged heads/$m 2>/dev/null` && test -n "$list" || continue From b164a7b7158040e5ba5d2d210c2d8bb3abea9d27 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 20 Feb 2006 19:43:02 -0800 Subject: [PATCH 0113/2612] PU - --continue. --- Doit | 2 +- PU | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Doit b/Doit index a9f91a6e9c6565..520e03616cb7ec 100755 --- a/Doit +++ b/Doit @@ -1,6 +1,6 @@ #!/bin/sh -J='-l 1.5 -j' +J= test -z "$(git diff --cached --name-status)" || { echo >&2 "Repository unclean." diff --git a/PU b/PU index 2a22632a82aefe..4b4be2ba42af34 100755 --- a/PU +++ b/PU @@ -9,8 +9,15 @@ case "$(git-diff-index --name-status HEAD)" in *) echo 2>&1 "Local modifications exist." exit 1;; esac -git checkout pu && -git reset --hard master && + +case "$1" in +--continue) + shift + ;; +*) + git checkout pu && + git reset --hard master || exit +esac ORIG_HEAD=`git rev-parse ORIG_HEAD` || exit LF=' ' From cd3b0b635a942a0ed8788bbc302132554cfc79d9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 2 Mar 2006 02:40:05 +0000 Subject: [PATCH 0114/2612] Follow the master branch tag. Forgot that no tracking "git pull" does not fetch the tags anymore. --- dodoc.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/dodoc.sh b/dodoc.sh index 8202a6047b2ea9..a2f87e8c1e864e 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -36,6 +36,7 @@ test "$DOCREPO" != "" && cd "$DOCREPO" || exit $? git pull "$MASTERREPO" master && +git fetch --tags "$MASTERREPO" || exit $? test $(git-rev-parse --verify refs/heads/master) == "$ID" && NID=$(git-describe --abbrev=4 "$ID") && test '' != "$NID" || exit $? From 17e735177e29373ab8625bc34761c5030f9608fe Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 1 Mar 2006 18:42:03 -0800 Subject: [PATCH 0115/2612] Announce, WI and SA updates. --- Announce | 5 ++++- SA | 1 - WI | 41 +++++++++++++++++++++++++++-------------- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/Announce b/Announce index 5e54e35a9d50bf..3ad582cdea39b5 100755 --- a/Announce +++ b/Announce @@ -18,9 +18,12 @@ master) kind="feature" ;; esac -fmt -64 </dev/null` || - test "$m" != pu || exit +echo "To: git@vger.kernel.org" +echo "Subject: What's in git.git" - list=`git-rev-list $in_addition $tagged heads/$m 2>/dev/null` && - test -n "$list" || continue +tagged=`git rev-parse --not --verify tags/sa/master` +list=`git-rev-list $tagged heads/master 2>/dev/null` +if test -n "$list" +then + echo + echo "* The 'master' branch has these since the last announcement." + echo + git log $tagged heads/master | git shortlog +fi - echo "* The '$m' branch$has_msg" +list=`git-rev-list heads/master..heads/next 2>/dev/null` +if test -n "$list" +then + echo echo - git log $in_addition $tagged heads/$m | - git shortlog + echo "* The 'next' branch, in addition, has these." echo + git log --no-merges heads/master..heads/next | git shortlog +fi - in_addition="$in_addition ^heads/$m" - has_msg=', in addition, has these.' -done +list=`git-rev-list ^heads/master ^heads/next heads/pu 2>/dev/null` +if test -n "$list" +then + echo + echo + echo "* The 'pu' branch, in addition, has these." + echo + git log --no-merges ^heads/master ^heads/next heads/pu | git shortlog +fi From f8ab671134121663f27a75f64e941a40d2a3bff1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 14 Apr 2006 13:54:38 -0700 Subject: [PATCH 0116/2612] snapshot 2006-04-14 --- Doit | 2 +- RB | 42 ++++++++++++++++++++++++++++++++ TODO | 78 +++++------------------------------------------------------- WI | 13 ++++++---- 4 files changed, 57 insertions(+), 78 deletions(-) create mode 100755 RB diff --git a/Doit b/Doit index 520e03616cb7ec..8a947d2fe4c15b 100755 --- a/Doit +++ b/Doit @@ -8,7 +8,7 @@ test -z "$(git diff --cached --name-status)" || { } Meta/Make clean >/dev/null 2>&1 -branches='next master maint' +: ${branches='next master pu'} nstall=install for branch in $branches diff --git a/RB b/RB new file mode 100755 index 00000000000000..ebd5efeaf8f14d --- /dev/null +++ b/RB @@ -0,0 +1,42 @@ +#!/bin/sh + +master_sha1=`git rev-parse --verify refs/heads/master` +LF=' +' +(cd .git/refs/heads && find -type f) | +sed -n \ + -e 's/^\.\///' \ + -e '/^[^\/][^\/]\//p' | +while read topic +do + rebase= done= not_done= trouble= date= + topic_sha1=`git rev-parse --verify "refs/heads/$topic"` + + date=` + git-rev-list -1 --pretty "$topic" | + sed -ne 's/^Date: *\(.*\)/ (\1)/p' + ` + only_next_1=`git-rev-list ^master "^$topic" next | sort` + only_next_2=`git-rev-list ^master next | sort` + rebase= + if test "$only_next_1" = "$only_next_2" + then + not_in_topic=`git-rev-list "^$topic" master` + if test -z "$not_in_topic" + then + :; # already up-to-date. + else + rebase=" (can be rebased)" + fi + fi + if test -n "$rebase" + then + echo "Rebasing $topic to pick up:" + git-rev-list --pretty=oneline "^$topic" master | + sed -e 's/^[0-9a-f]* / * /' + git checkout "$topic" && + git rebase master || break; + fi +done + + diff --git a/TODO b/TODO index 8b5dd0f047f70f..0d86e47d6c3772 100644 --- a/TODO +++ b/TODO @@ -17,45 +17,23 @@ if ever -- only if somebody cares enough and submits a clean patch, perhaps ;-). -Documentation -------------- - -* No pending issues at the moment. "Revamp Tutorial" initiative - by Bruce Fields ongoing and things are looking better. - - UI -- * Make "git branch -d foo" while on foo branch suggest "maybe you want to go back to 'master'?" -* Error message from "git checkout -b bar v2.6.10" should assume - v2.6.10 is an attempt to switch to a new branch based on - mistyped tag, not an attempt to revert path v2.6.10 from the - HEAD commit with extra "make and switch to this branch" - argument. - -* "git commit [-i|-o] paths..." with misspelled paths would be - silently ignored. Add a flag to ls-files to catch unmatched - pathspec to prevent this. - Design issues ------------- -* Rehash "git commit" with various parameters to be more - intuitive without breaking traditinal users too much. We need - to phase this in, especially if we are going to change "git - commit" to imply the current "git commit -a" behaviour. - -* "intent to add" index entries. +* "intent to add" index entries? * Plug-in file-level merges. On the other hand, we may not even need this; just tell people to run "xxdiff -U" on the working tree files. -* Doing a merge in a separate directory. +* Doing a merge in a separate directory? * Make 'format-patch' take revision limiters similar to rev-list. For example: @@ -101,17 +79,14 @@ Technical (heavier) This needs a matching smart on the dumb protocol downloader. -* Maybe an Emacs VC backend. - -* Look at libified GNU diff CVS seems to use, or libxdiff. - [Daniel has his own diff tool almost ready to start - integrating and testing] - Technical (milder) ------------------ -* "git status -v" to give commit preview. +* Shallow clones. + +* Encourage competition between annotate vs blame. Maybe come + up with some nontrivial test cases. * Subprojects. I think the "bind commit" approach has been outlined at sufficiently detailed level. Maybe find time to @@ -119,34 +94,6 @@ Technical (milder) <7vacdzkww3.fsf@assigned-by-dhcp.cox.net> -* Shallow clones. - -* Mark entries as "assume unchanged" in the index. - - - - A config item '[core] trust_stat = false' would cause to: - - - "update-index" with or without --add would mark the path - valid after registering. Should we make the working tree - file read-only at this point? - - - checkout-index -u would mark the path and makes the working - tree file read-only. - - - read-tree without -u would mark the path invalid. - - - update-index --refresh should *not* mark up-to-date paths valid. - - Impacts to various commands: - - - update-index --refresh would ignore them. - - - diff-files would say unchanged. - - - diff-index without --cached acts the same way as diff-index - --cached. - * Decide what to do about rebase applied to merged head. One extreme is to allow rebase if "rev-list ours..theirs" gives anything. This loosens the current merge-base based approach. @@ -164,8 +111,6 @@ Technical (milder) <20060114021800.4688.qmail@web31803.mail.mud.yahoo.com> -* Perhaps a smarter HTTP anonymous download via CGI. - * diff stopping at the first output; qgit wants to know if this tree has any A or D from the other tree and nothing else. Would help internal tree-diff in rev-list as well. @@ -179,22 +124,11 @@ Technical (milder) * Perhaps detect cloning request in upload-pack and cache the result for next cloning request until any of our refs change. -* Perhaps accept patch to optionally allow '--fuzz' in - 'git-apply'. am/applymbox is _not_ the place to do it. - -* Allow 'git apply' to accept GNU diff 2.7 output that forgets - to say '\No newline' if both input ends with incomplete - lines. - * Perhaps deal with "Files differ" (binary diff) in non C locales. * Maybe grok PGP signed text/plain in applymbox as well. -* Output full path in the "git-rev-list --objects" output, not - just the basename, and see the improved clustering results in - better packing [Tried, but did not work out well]. - Technical (trivial) ------------------- diff --git a/WI b/WI index f9201442af0864..e86accdae08a40 100755 --- a/WI +++ b/WI @@ -1,11 +1,14 @@ #!/bin/sh # Prepare "What's in git.git" +master_at=$(git rev-parse --verify refs/heads/master) + echo "To: git@vger.kernel.org" echo "Subject: What's in git.git" +echo "X-master-at: $master_at" tagged=`git rev-parse --not --verify tags/sa/master` -list=`git-rev-list $tagged heads/master 2>/dev/null` +list=`git-rev-list $tagged refs/heads/master 2>/dev/null` if test -n "$list" then echo @@ -14,22 +17,22 @@ then git log $tagged heads/master | git shortlog fi -list=`git-rev-list heads/master..heads/next 2>/dev/null` +list=`git-rev-list refs/heads/master..refs/heads/next 2>/dev/null` if test -n "$list" then echo echo echo "* The 'next' branch, in addition, has these." echo - git log --no-merges heads/master..heads/next | git shortlog + git log --no-merges refs/heads/master..refs/heads/next | git shortlog fi -list=`git-rev-list ^heads/master ^heads/next heads/pu 2>/dev/null` +list=`git-rev-list ^refs/heads/master ^refs/heads/next refs/heads/pu 2>/dev/null` if test -n "$list" then echo echo echo "* The 'pu' branch, in addition, has these." echo - git log --no-merges ^heads/master ^heads/next heads/pu | git shortlog + git log --no-merges ^refs/heads/master ^refs/heads/next refs/heads/pu | git shortlog fi From bf95706c1059b78ba0de58ae0c559a6e692a183e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 18 Apr 2006 02:42:36 -0700 Subject: [PATCH 0117/2612] Install master and next at different places. Signed-off-by: Junio C Hamano --- Make | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Make b/Make index 7c8b29763ea814..71586e28f003f6 100755 --- a/Make +++ b/Make @@ -7,9 +7,17 @@ LANG=C LC_CTYPE=C export PATH LANG LC_CTYPE +case "`git symbolic-ref HEAD`" in +refs/heads/master) + d="prefix=$HOME/git-master" ;; +refs/heads/pu) + d="prefix=$HOME/git-pu" ;; +*) + d="bindir=$HOME/bin/Linux gitexecdir=$HOME/bin/Linux" ;; +esac + : ${O=-O2} -make bindir=$HOME/bin/Linux \ - gitexecdir=$HOME/bin/Linux \ +make $d \ PYTHON_PATH=/usr/bin/python2.4 \ CFLAGS="$O -Wall -Wdeclaration-after-statement -g" \ WITH_SEND_EMAIL=YesPlease \ From eaf876c00f4695995d6eb56a5978d34dca9aa9ac Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 21 Apr 2006 14:43:04 -0700 Subject: [PATCH 0118/2612] private Make tweaks for more separate installations. --- Make | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Make b/Make index 71586e28f003f6..e749ca48932e73 100755 --- a/Make +++ b/Make @@ -8,12 +8,16 @@ LC_CTYPE=C export PATH LANG LC_CTYPE case "`git symbolic-ref HEAD`" in +refs/heads/next) + d="bindir=$HOME/bin/Linux gitexecdir=$HOME/bin/Linux" ;; +refs/heads/maint) + d="prefix=$HOME/git-maint" ;; refs/heads/master) d="prefix=$HOME/git-master" ;; refs/heads/pu) d="prefix=$HOME/git-pu" ;; *) - d="bindir=$HOME/bin/Linux gitexecdir=$HOME/bin/Linux" ;; + d="prefix=$HOME/git-test" ;; esac : ${O=-O2} From 6f674a8a6b32c85ae930e7a942fed4aa540fe439 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 21 Apr 2006 14:43:30 -0700 Subject: [PATCH 0119/2612] WI and SA to keep track of maint branch as well --- SA | 2 ++ WI | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/SA b/SA index dd30ef8d923c79..b71be38c5de031 100755 --- a/SA +++ b/SA @@ -3,3 +3,5 @@ # "What's in git.git" announcement, for the next round. git tag -f sa/master refs/heads/master +git tag -f sa/maint refs/heads/maint + diff --git a/WI b/WI index e86accdae08a40..6ddc1e44287700 100755 --- a/WI +++ b/WI @@ -1,12 +1,24 @@ #!/bin/sh # Prepare "What's in git.git" +maint_at=$(git rev-parse --verify refs/heads/maint) master_at=$(git rev-parse --verify refs/heads/master) echo "To: git@vger.kernel.org" echo "Subject: What's in git.git" +echo "X-maint-at: $maint_at" echo "X-master-at: $master_at" +tagged=`git rev-parse --not --verify tags/sa/maint` +list=`git-rev-list $tagged refs/heads/maint 2>/dev/null` +if test -n "$list" +then + echo + echo "* The 'maint' branch has these fixes since the last announcement." + echo + git log --no-merges $tagged heads/maint | git shortlog +fi + tagged=`git rev-parse --not --verify tags/sa/master` list=`git-rev-list $tagged refs/heads/master 2>/dev/null` if test -n "$list" @@ -14,13 +26,12 @@ then echo echo "* The 'master' branch has these since the last announcement." echo - git log $tagged heads/master | git shortlog + git log --no-merges $tagged heads/master | git shortlog fi list=`git-rev-list refs/heads/master..refs/heads/next 2>/dev/null` if test -n "$list" then - echo echo echo "* The 'next' branch, in addition, has these." echo @@ -30,7 +41,6 @@ fi list=`git-rev-list ^refs/heads/master ^refs/heads/next refs/heads/pu 2>/dev/null` if test -n "$list" then - echo echo echo "* The 'pu' branch, in addition, has these." echo From 8e6f38443e97e150cd946d508104cad16fdd6bbe Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 21 Apr 2006 14:46:35 -0700 Subject: [PATCH 0120/2612] Minor update to Subpro.txt This is ancient in git timescale, but we see requests for subprojects support every now and then. The document talks about a possible UI level semantics and core level support. Most of the core level support is in the "bind commit" updates topic branch, except a few. Most notably, "update-index --bind" and "update-index --unbind" still needs to be written. Signed-off-by: Junio C Hamano --- Subpro.txt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Subpro.txt b/Subpro.txt index 8340d888cda32b..713b72eea20e56 100644 --- a/Subpro.txt +++ b/Subpro.txt @@ -40,19 +40,20 @@ The idea here is to: . Keep `linux-2.6/` part as an independent project. The work by the project on the kernel part can be naturally exchanged with the other kernel developers this way. Specifically, a tree - object contained in commit objects belonging to this project + object contained in commit objects belonging to this sub-project does *not* have `linux-2.6/` directory at the top. . Keep the `appliance/` part as another independent project. Applications are supposed to be more or less independent from the kernel version, but some other bits might be tied to a specific kernel version. Again, a tree object contained in - commit objects belonging to this project does *not* have + commit objects belonging to this sub-project does *not* have `appliance/` directory at the top. . Have another project that combines the whole thing together, so that the project can keep track of which versions of the - parts are built together. + parts are built together. The Makefile is illustrated above, + but there might be other files and directories. We will call the project that binds things together the 'toplevel project'. Other projects that hold `linux-2.6/` part @@ -111,6 +112,10 @@ with `update-index --bind` command. Also note that in this round of proposal, there is no separate branches that keep track of heads of subprojects. + +`update-index --bind` is not implemented on the core side yet; +it would involve backward incompatible changes to the index +format. ============ Let's not forget to add the `Makefile`, and check the whole @@ -283,6 +288,11 @@ error: the merged heads have subprojects bound at different places. gadget/ manual/ ------------ +[NOTE] +============ +Again, `update-index --unbind` is not implemented yet +on the core side. +============ Their branch added another subproject, so this did not work (or it could be the other way around -- we might have been the one From 0bc1bdd1ec394705a13ec726bd25ad5390746277 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 4 May 2006 16:01:16 -0700 Subject: [PATCH 0121/2612] Snapshot 2006-05-04 --- Doit | 5 ++--- RB | 6 ++++++ TO | 9 +++++++-- jc.png | Bin 0 -> 5660 bytes 4 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 jc.png diff --git a/Doit b/Doit index 8a947d2fe4c15b..e10e32e230e814 100755 --- a/Doit +++ b/Doit @@ -8,7 +8,7 @@ test -z "$(git diff --cached --name-status)" || { } Meta/Make clean >/dev/null 2>&1 -: ${branches='next master pu'} +: ${branches='next master maint pu'} nstall=install for branch in $branches @@ -20,8 +20,7 @@ do Meta/Make $J all && Meta/Make $J $nstall && Meta/Make test && - Meta/Make clean && - nstall=all || exit $? + Meta/Make clean || exit $? else echo "* No $branch" fi diff --git a/RB b/RB index ebd5efeaf8f14d..918a3727f700d5 100755 --- a/RB +++ b/RB @@ -9,6 +9,12 @@ sed -n \ -e '/^[^\/][^\/]\//p' | while read topic do + case " $* " in + *' '"$topic"' '*) + echo >&2 "* Skipping $topic" + continue ;; + esac + rebase= done= not_done= trouble= date= topic_sha1=`git rev-parse --verify "refs/heads/$topic"` diff --git a/TO b/TO index 1ac8fb868d82a5..996a5bab496efb 100755 --- a/TO +++ b/TO @@ -1,11 +1,11 @@ #!/bin/sh clean= next=next +branch=`git symbolic-ref HEAD` while case $# in 0) break ;; esac do case "$1" in --clean) - branch=`git symbolic-ref HEAD` && test refs/heads/master = "$branch" || { echo >&2 Not on master exit 1 @@ -40,6 +40,11 @@ while read topic do rebase= done= not_done= trouble= date= topic_sha1=`git rev-parse --verify "refs/heads/$topic"` + is_current= + if test "refs/heads/$topic" = "$branch" + then + is_current=" *" + fi date=` git-rev-list -1 --pretty "$topic" | @@ -88,7 +93,7 @@ do not_done="${LF}Up to date." fi - echo "*** $topic ***$date$trouble$done$not_done" + echo "*** $topic ***$date$is_current$trouble$done$not_done" if test -z "$trouble$not_done" && test -n "$done" && diff --git a/jc.png b/jc.png new file mode 100644 index 0000000000000000000000000000000000000000..7b181d15cebb4c86a6ad7fed3dbf30ce2223b4c5 GIT binary patch literal 5660 zcmYLNbyQSev>sqc34tLUx=XqS5RmRtNT#adw*x2I9+WOA_7_h002OwrmCoqmhk@u9uE2`GlnCC7C6=# zDvE$&03+ax@KXu}T7&PQYT^X|JZJfDVEBKL^+hXjz16goaObeGK-d!bT|z-<6`i+| zvA2S|tE-)xH$cJD&dS@)meJ4A+kx?wgB_!anwIXVEt?wvKoO>7>Bb1@wA( z;IT7g@ymCuJiLhbPfJr|i5H4;)mjji#JOK|U)hzPX8i5ho0BF*QXf6}{V_RmjX^h8 zBX9QX=3g&vi&AGE{oEKtLP%V(w6-2<2(l+h-nm!Hmw@v)rNU2(v7(ZQ1OQ+h$~Qc!!FTf57o zu@)h>i~DEs@uRKF6UyxAS&3G<*BiMjfLv_bQk;T##&v(4!pgG<+=YYE3cc(axf8D9 zEEhtoFt%jRU1M;}oLSBkd3UE+Bp6q6dcVEAvKKT8h56DsbkcsuTR<;ULeL+`fsARWL=kI0d{qqjDcA8beq&VqMECGM`@nbtHGW~M zVgSM};mmy>`nnA#(QCN?Baj(X%|*?D80!1maWLA8wjEi;G#0;OVGMoH)_Pcp$ery0 zjs>Q-gtJ$l@)T}w%&Z^$)Y2wNbTYowJmp2ztd9e|I_BXcEKR<=vvYxUi1R{eofw4( zMn>91(?+TULadq}xsDau-@@Y(1<-!VbRi6SK0dN5AE40;n;cI&kg4VgwFoy&V_kkw zMpno-g;(Q79&+8Y7g|7Mw8fTt*t^$t#3+Cmsj7Wxt-F|Tn&i!&)O9T_bFYg7{O{1~ zI_7r$E{te8LodhD-=41?TV6m!a2rR2BpX4tl@qt)kKy`LSmzZhS@=3dqH<2LSlS7G zqexi>4h67BIPL)zq|QpF%1Wk*b481+X8bG9OE<0Rs)8KvheMithBa8p@KJ! zGDzAwDsJz>&;~0Po|7fsG|CN~p2KI)lJFfeqeau#ui)mq*Mu1LEyUtt@jB~KexY3_c>~fyvfggniw}& zdnxRc9x^A~u&L>fk9SNr2W_yq%?ouL9vWra=|z6#ETbznso0QZ}oTY6UA({ zEKp{AT0f&U=JusDJ>4v2y3=YUWi8TF4+O--;H0HrapHBQb&xgm47GmLa9oPLK<}STSm3r&wP;{e>M5Rw?8m00o*DjrM^O}oz3{S)!bHrKzY z0mX3mj9w>xMA&MlpZ#5kr6mJqc$k~!{q)+=p8+H^IsKyP_yxT@-(3;)n>-V`S0HRb zlR^=$1Z8p$2-DBTEZtLK+Jcm4#FA*l=?r-&tiFI|%@DPtQGcF%BhI9jCYh~7Y8_3e zz*{EaCZ757z09w~MrgKXoqIprKzuDd2A%jVh2yU%YJ1XdAO@X5Aic;6&cdcQBDAw( zfwp;ITKp@*0Ecfb{qSjx^=2m9s`3^QxP7=J8L3(4Hy1k~8fi-nL|CpGHiJUNgWVX* z33>WWc7$DpSM{FI7{}rh2UR@~lR6n@Nu(SjKo3Oc3Rco%9Pw;4_y_MDEUA!kY4RT= zMD*$LpKv0(5ME{59VMJ8tZ{FW?Q+63(tz)d-MK#sR+wAGSV{53?*fq}R*dn?nEF#g zpQUJd=w!*_7A&r}2#~y$XuH`Pn?59m6Cf%ML**0R0b6KxHeF&gk$#f$jWerg-j#r` ziX4!S$h)0_asLcO!h;#k&=zOlbC|5s^-l!7<-}OZZ9^aA! zhrGGI8ooJ)Pz8peMO>osg~`oBb5J0xBb4@h=y1l7U9%b^2SYar^9#-f|;- z^CdSO22=U$bMhUi#i^@|=HK{U4Y!X#^Ho~>4Ji>#n_MG9hstW!va&0K!Xr81VzkRS zmq4hLdgQr}-WH1j&Z&Kt44MY>I($WF#~kF8Qh#N%dx+2~v62bG8HLfs`Q@Wb!GQ<; zKoi*a=U^a0MiOqfc%DDx^<)XT*j|VHm_-T1z%Tear)ig;#fs;m^VAFM&?!VPWbdOW zDy8emY;zOMaX!No3-%XYAIk#M#nQ{;e)_@V`R6m}+^`pP|9G$>og=}k^lFBzgtP7a6BF605y6thdiZ7al`>^Wwe%VkXs z9h>Dz^hXo%U@C=7Q-gQlAI4NwiN@p!H?}-w>kDLU4M@3EPj!-WYT6D;&>!G5?z9DI(4ac#n<6Bdi6IDKX&u9K7hKy>Bzf;OZ1syrvwr`4W(X`5`PL3IV zOeAwoaR^-2SRMcY8X6u|)m>be$Hhm!cj-H9=d7D`?HLc17`z=(EsXf;F$g!tej_uq zKDf1R433)i7*V^VZGE}6>D)Diu*{FKV{+&i2H#7)(d738 zVcEP2dTA6M`i<7>!d6;_B(A8TaLfw zcVQh*4VYp$-qMp#gxC)qhkL~cIz=(KB?WH1ghU@ol|x>TaFC*~MpqPwVst29%e?Dw zMF4~o`0fl9=w|Zl$VcyH#E_9!AwP}RjgBRkhiQ@~GbkSEjB`l$%|0EUe}Jx}G23xM z5(1j~;T+mlPbv+GBo=14t>@4@t9`20!)uI#DHmUcfQF3pzlM6e!-sO{g8D=Plw5Y~v zJ^5zy8&(4ae>PW6JWOVY&+d>7P|?VM9t!5ZOrmHOWH(GYk4->OkC@(92NG>4)4`oW zXXm_(wv(k4??xN^=WJ;6JKV2cj7dl+$TbB@aB%o(2b^dMp7l*QpoEXi^Qii|mc#w{ z{5lkx4p-W+v^Ir>sQ;}h;^lj@9?CRCI!gDj6{{J%{Qth-|Jnl#E#{rbi-Nx_uuXtE z<(}1UjeMj!<{$~~;Dv$Wc@Hr9hWzj4o*wE^Ac85csjmgY+>EsE$81!#Wma<9u(Xp2 z8KC%afHePiY^mR)0FHK&=eHNvQ5ljNm-V&^)R#^dl~<}AHz%s#g0T-0*H^LEVZ`fC zzc-5i;B@BvoXJe1ud^)By(ARd^JGqMTZk*aNrWWSy+~dlU9++p_7pu0N1Ix~?btlW zl>U3}4O&&jCr=BYSf%d!z@Ve@a|`=7hWWWa#@9!a$hR1Fe5!L4ym-YoMM{~)VnnF? zF9F8q<04MjWPUaN_PGaVy&&YqGt3HCrU}i)34{3-5L2+icbeiX1Zi1zj%|=8;yAJX zUT(r9S7nhfjfLBpQv@7HjT1N&Ent$no&E6winqTR&sYOU1J8El27`=%Cm4YnP6VQ= z<0E)}(P4#_Dr-60T^~IL2)!#LQvt~#DLl0+^YXg1+lc2%T(RsGi2jgR3+Ika~0*%RSSu<27&D`xup+6VyAzu7p0`gFH1UP8J%l>bfon-ap>^t z%{%oRXW{Sc?^oEnXv-~sc3o~s{17l%qU7M>(uYMN9k$qHzjgQTQX=@TK#SXId^(4Y zQ=kbTx3I3Mi9G1fG0nBGl3p=qd}UC`VP(0lzJ5e)?emWxKYo7jy$NxstgnBH_O61t zIb9UEz1pB$8}{`pHw9(21%j3#^iD87KAs)%=Ww>lxYL*K&*{4Rkn?b3e#C^spu7oj zTJ73@yB_shd58Pwc(D{;7yzQ6fHgN$w64FGqDlII=kUyX9|@be&J%Z6mZ%PG>4Q5? z*9Tleg}@jmT4=|XciU?@)|j=Y5vs@q87L?yRG!+8=MSL@X@sFE8+U}>etzP^!^66U zhGOHTJ3pGC6NNPgHCLZA4jBL8?T6g{fwi_$ArOeasA(OqL(`Egew~nS&hyX9uIsy# zw)KjqW9$&G`DHDRhB%5eL)NFJB8+**#)eh3X)}S8-|u{Qi5LVDUm)dYJ^S@FH9h^G(R+U5`nP8G(@!SW0+0AUWo4Cq z{tO%&8>?NHssSx+Z=n6~0ga`6nIKA|TC<*}i5CfeYXP`CMzxwXp!W~|_Vy1Bth#?^ zS-y`Gb)Nf$I+*ULOJ`N{igJIr`{&^5`ZMHuwfy$M=V+ufj}UQ zKdQ^8%XLaiOIdi3b=^1I#Prg!TLZ~9{{Gas#NhAYSh$V8oBjR$E7wRF8JUGnKmJ+^ z1cb|N=Gh!{G&@{{Aq4b<>N)DJS*WtHk!(HqlBmUXIXW|wGGEG1`_gA;XUBgdit21i zga5#yuC|t#A@~gA{l6V51J`#We60er=Kn#Wv=plj@rTy;ctNmoi62|%{fpn-w{FrX zq=Ip)8=YI{iP(I23nH_$s|zf9k4mr1-dP@~eLXa6wvuHZ~B#l~_tU;$;ppZ1$Mta*j@@`1pu^t*R0YEn1W3=H`|rhoJNR$<@_WMP1#s zQiZ(~GKPeqzdPjCdQnVB&BtABt;>AXmD_F^tqa}^2A7UKJA>9 zIXOA$nh1L>|PFfM4D!`PCYp zX3A~CK=0EBtH$R;?`Ss0pCYk1RL+-4FQ!=cP|K+jXcAq*5&?LNk)&m)B@J=9M~A<- zzQPM!;zThn))lr`<=+POSrlXZs^a_57MO|t?AH70n6rDyTAEe>8}%y+X#MC#Q9AE< zmC|QfI-ed)WT7g71*Z)J2VK&d6!n=8taU*pX6gw=0Qq;@kcWHj04FlpiMvyyy3K8l zc`eIc&wu+vI<;HKB_5DLI`6<}%$!97P?)NC_H4_N#Io!dcj!~#QuKLU41XT6@YK)X z7P_ik-m%^^BCF9V7|{-E$h|LX()h0YbH-&H_*XPzQr152yXy%4^lDe{C>6l^BvIS1 zZ?ZFV0ZCANBv;P!3M@CYDLvXH8mp@Y__qOQJ_hLp3xvZSfDd;8pnKVRqp<*5^i?L; wB)iFf!5~HcZ%ohvO_R*UYX6BwgGUmE)3jjAGZHKGr7b{BNn5e@<=cq=0b0Y+i2wiq literal 0 HcmV?d00001 From ba776ae4b85b10c278c618cada2b0caa1c50ad03 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 5 May 2006 19:12:09 -0700 Subject: [PATCH 0122/2612] TODO updates (remove stale ones) Pasky twisted my arm so I started to look at how stale my TODO list was. I'll move some stuff from the "unresolved" posting after rethinking, but for now this removes the old or resolved entries first. --- TODO | 43 ++++++++----------------------------------- 1 file changed, 8 insertions(+), 35 deletions(-) diff --git a/TODO b/TODO index 0d86e47d6c3772..6dc00280a42c48 100644 --- a/TODO +++ b/TODO @@ -27,6 +27,8 @@ UI Design issues ------------- +* tree entries in index? + * "intent to add" index entries? * Plug-in file-level merges. On the other hand, we may not even @@ -35,38 +37,10 @@ Design issues * Doing a merge in a separate directory? -* Make 'format-patch' take revision limiters similar to - rev-list. For example: - - A C - ....---x---o---o---x---o---o - / - / - / - ....---x---o---o - B - - we should be able to format commits 'o', without duplicates, - by: - - $ git format-patch ^A ^B C - - Currently the closest approximation is - - $ git format-patch A..C B..C - - which results in the last two commits including C formatted - twice. - Technical (heavier) ------------------- -* Libification. There are many places "run once" mentality is - ingrained in the management of basic data structures, which - need to be fixed. [Matthias Urlichs is already working on - this: ] - * Maybe a pack optimizer. Given a set of objects and a set of refs (probably a handful @@ -79,6 +53,11 @@ Technical (heavier) This needs a matching smart on the dumb protocol downloader. +* Libification. There are many places "run once" mentality is + ingrained in the management of basic data structures, which + need to be fixed. [Matthias Urlichs is already working on + this: ] + Technical (milder) ------------------ @@ -88,11 +67,8 @@ Technical (milder) * Encourage competition between annotate vs blame. Maybe come up with some nontrivial test cases. -* Subprojects. I think the "bind commit" approach has been - outlined at sufficiently detailed level. Maybe find time to - actually start prototyping it? +* Subprojects. Try "gitlink". - <7vacdzkww3.fsf@assigned-by-dhcp.cox.net> * Decide what to do about rebase applied to merged head. One extreme is to allow rebase if "rev-list ours..theirs" gives @@ -124,9 +100,6 @@ Technical (milder) * Perhaps detect cloning request in upload-pack and cache the result for next cloning request until any of our refs change. -* Perhaps deal with "Files differ" (binary diff) in non C - locales. - * Maybe grok PGP signed text/plain in applymbox as well. From 6b9ffbebe7b83ac6a61c9477ab941d999f5d0c96 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 9 May 2006 12:55:19 -0700 Subject: [PATCH 0123/2612] Sort branches in TO script. --- TO | 1 + check-topic-merges | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100755 check-topic-merges diff --git a/TO b/TO index 996a5bab496efb..169f1fab2939df 100755 --- a/TO +++ b/TO @@ -36,6 +36,7 @@ LF=' sed -n \ -e 's/^\.\///' \ -e '/^[^\/][^\/]\//p' | +sort | while read topic do rebase= done= not_done= trouble= date= diff --git a/check-topic-merges b/check-topic-merges new file mode 100755 index 00000000000000..1a3a96d4719cd4 --- /dev/null +++ b/check-topic-merges @@ -0,0 +1,30 @@ +#!/bin/sh +F=`git diff-tree -r --name-only HEAD^ HEAD` +echo "The topic modifies these paths:" +echo "$F" | sed -e 's/^/ /' + +# Documentation/git-cvsexportcommit.txt +# git-cvsexportcommit.perl +# git-cvsserver.perl +B=`git merge-base master HEAD` +# 45f75a0167b4a4693f2c6005bf7db231ca91ecc8 (master) +_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' +_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" +git rev-list --parents master..HEAD^2 | +sed -ne "/^$_x40 $_x40 $_x40/p" | +while read merge first second +do + echo + # first is the previous cvs topic tip, second is what was merged into + # it. Does the merge have anything to do with adjust the topic to + # updated upstream? + git name-rev "$merge" + out=`git diff-tree --stat "$merge^" "$merge" -- $F` + case "$out" in + '') + echo "* Nothing to do with the topic" ;; + *) + echo "$out" ;; + esac +done + From a525de7ea7186eaa4de41fff492725153fc536df Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 9 May 2006 13:01:11 -0700 Subject: [PATCH 0124/2612] A bit more commenting and cleaning up. --- check-topic-merges | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/check-topic-merges b/check-topic-merges index 1a3a96d4719cd4..b6d66b840ddaa5 100755 --- a/check-topic-merges +++ b/check-topic-merges @@ -1,13 +1,13 @@ #!/bin/sh +# +# Run this script _after_ making a proposed merge into a copy of +# the target branch (e.g. "master") to see if it contains unrelated +# merging back from the upstream. +# F=`git diff-tree -r --name-only HEAD^ HEAD` echo "The topic modifies these paths:" echo "$F" | sed -e 's/^/ /' -# Documentation/git-cvsexportcommit.txt -# git-cvsexportcommit.perl -# git-cvsserver.perl -B=`git merge-base master HEAD` -# 45f75a0167b4a4693f2c6005bf7db231ca91ecc8 (master) _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" git rev-list --parents master..HEAD^2 | @@ -15,7 +15,7 @@ sed -ne "/^$_x40 $_x40 $_x40/p" | while read merge first second do echo - # first is the previous cvs topic tip, second is what was merged into + # First is the previous cvs topic tip, second is what was merged into # it. Does the merge have anything to do with adjust the topic to # updated upstream? git name-rev "$merge" @@ -27,4 +27,3 @@ do echo "$out" ;; esac done - From cb71bc83592a6475241d78f054aefb75144d74f2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 18 May 2006 00:40:33 -0700 Subject: [PATCH 0125/2612] Conditionally allow specifying -j; default to -j2 --- Doit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doit b/Doit index e10e32e230e814..49b3ebe37ede60 100755 --- a/Doit +++ b/Doit @@ -1,6 +1,6 @@ #!/bin/sh -J= +: ${J=-j2} test -z "$(git diff --cached --name-status)" || { echo >&2 "Repository unclean." From a32d80295581365b318e88fc657e25c9acb75bd1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 18 May 2006 00:48:11 -0700 Subject: [PATCH 0126/2612] dodoc: adjust to "git add ." complaints. The updated "git add" complains and fails, not just warns. Work it around until it is fixed. --- dodoc.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dodoc.sh b/dodoc.sh index a2f87e8c1e864e..15926f361d67c5 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -78,7 +78,7 @@ else fi || exit $? cd ../doc-htmlpages && - git add . && + (git add . || echo no new files -- not a big deal) && if git commit -a -m "Autogenerated HTML docs for $NID" then git-send-pack "$MASTERREPO" master:refs/heads/html || { @@ -94,7 +94,7 @@ make man1="$DOCREPO/doc-manpages/man1" man7="$DOCREPO/doc-manpages/man7" \ install >../:man.log 2>&1 && cd ../doc-manpages && - git add . && + (git add . || echo no new files -- not a big deal) && if git commit -a -m "Autogenerated man pages for $NID" then git-send-pack "$MASTERREPO" master:refs/heads/man || { From 53b13cb673f59b6d192c8a38671c00826e37b08e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 8 Jun 2006 14:03:38 -0700 Subject: [PATCH 0127/2612] Pre 1.4.0 updates to TODO to describe postponed items. --- TODO | 67 +++++++++++++++++++++++++++++++++++------------------------- WI | 14 +++++++++---- 2 files changed, 49 insertions(+), 32 deletions(-) diff --git a/TODO b/TODO index 6dc00280a42c48..027c4bc8184cd9 100644 --- a/TODO +++ b/TODO @@ -17,58 +17,66 @@ if ever -- only if somebody cares enough and submits a clean patch, perhaps ;-). -UI --- - -* Make "git branch -d foo" while on foo branch suggest "maybe - you want to go back to 'master'?" - - Design issues ------------- -* tree entries in index? +* tree entries in index? -- sorry, stalled -* "intent to add" index entries? +* "intent to add" index entries? -- together with the above + needs rethinking. * Plug-in file-level merges. On the other hand, we may not even need this; just tell people to run "xxdiff -U" on the working - tree files. - -* Doing a merge in a separate directory? + tree files (or kompare). Technical (heavier) ------------------- -* Maybe a pack optimizer. - - Given a set of objects and a set of refs (probably a handful - branch heads and point release tags), find a set of packs to - allow reasonably minimum download for all of these classes of - people: (1) somebody cloning the repository from scratch, (2) - somebody who tends to follow the master branch head reasonably - closely, (3) somebody who tends to follow only the point - releases. - - This needs a matching smart on the dumb protocol downloader. - * Libification. There are many places "run once" mentality is ingrained in the management of basic data structures, which - need to be fixed. [Matthias Urlichs is already working on - this: ] + need to be fixed. [Matthias Urlichs was already working on + this: , but I + do not know what happened to his efforts] + +* Lazy clones that can be controlled by the user, ranging from + totally on-demand a la CVS/SVN to "cache down to this old + commit so that I can make full use of git on at least recent + history". This need a lot of work in making tools to exit + gracefully when they hit unavailable objects while offline. Technical (milder) ------------------ -* Shallow clones. +* duplicated refspec given to "fetch-pack a a a" makes it emit + strange error message because it triggers the "match only + once" logic. Maybe strip the dups on the input side + (Uwe Zeisberger + <20060608073857.GA5072@informatik.uni-freiburg.de>). + +* upload-pack support for start fetching from any valid point on + the history, not just published refs. (Erik W. Biederman + ) + +* git-daemon side support for virtual hosting. Client side + is ready in 1.4.0 (Jon Loeliger <1149610100.23938.75.camel@cashmere.sps.mot.com>). + +* teach git-upload-pack not to ack-continue early when the + client has roots it does not know about but it already has + learned the fork points for all the requested heads + (Ralf Baechle <20060524131022.GA11449@linux-mips.org>). + +* Per user .gitconfig across repositories -- ongoing. * Encourage competition between annotate vs blame. Maybe come up with some nontrivial test cases. -* Subprojects. Try "gitlink". +* Subprojects. Try "gitlink" -- sorry, stalled. +* Rebase and checkout -m should be able to use recursive + strategy as well. These commands currently do not work across + renames. * Decide what to do about rebase applied to merged head. One extreme is to allow rebase if "rev-list ours..theirs" gives @@ -108,6 +116,9 @@ Technical (trivial) * git-proxy should be spawned with sh -c 'command' $1 $2. +* Maybe a true git-proxy command that reads the first request + pkt-line, and redirects the request to its real destination. + * test scripts for the relative directory path stuff. * In a freshly created empty repository, `git fetch foo:bar` diff --git a/WI b/WI index 6ddc1e44287700..fa0d9f8ca1258e 100755 --- a/WI +++ b/WI @@ -4,6 +4,12 @@ maint_at=$(git rev-parse --verify refs/heads/maint) master_at=$(git rev-parse --verify refs/heads/master) +log () { + git log --no-merges "$@" | + git shortlog | + perl -pe 'if (!/^ / && !/^$/) { s/^/ / }' +} + echo "To: git@vger.kernel.org" echo "Subject: What's in git.git" echo "X-maint-at: $maint_at" @@ -16,7 +22,7 @@ then echo echo "* The 'maint' branch has these fixes since the last announcement." echo - git log --no-merges $tagged heads/maint | git shortlog + log $tagged heads/maint fi tagged=`git rev-parse --not --verify tags/sa/master` @@ -26,7 +32,7 @@ then echo echo "* The 'master' branch has these since the last announcement." echo - git log --no-merges $tagged heads/master | git shortlog + log $tagged heads/master fi list=`git-rev-list refs/heads/master..refs/heads/next 2>/dev/null` @@ -35,7 +41,7 @@ then echo echo "* The 'next' branch, in addition, has these." echo - git log --no-merges refs/heads/master..refs/heads/next | git shortlog + log heads/master..heads/next ^heads/cleannext fi list=`git-rev-list ^refs/heads/master ^refs/heads/next refs/heads/pu 2>/dev/null` @@ -44,5 +50,5 @@ then echo echo "* The 'pu' branch, in addition, has these." echo - git log --no-merges ^refs/heads/master ^refs/heads/next refs/heads/pu | git shortlog + log ^heads/master heads/next..heads/pu fi From 48d2c0e21f19c0a771492428cdf7f274536e8ae0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 9 Jun 2006 11:37:15 -0700 Subject: [PATCH 0128/2612] A few more items to TODO. --- TODO | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/TODO b/TODO index 027c4bc8184cd9..9f976cf2fd99f8 100644 --- a/TODO +++ b/TODO @@ -49,12 +49,20 @@ Technical (heavier) Technical (milder) ------------------ +* git grep should be able to omit prefix when invoked from a + subdirectory. Either make it an option or default with + --full-name like ls-files does. + * duplicated refspec given to "fetch-pack a a a" makes it emit strange error message because it triggers the "match only once" logic. Maybe strip the dups on the input side (Uwe Zeisberger <20060608073857.GA5072@informatik.uni-freiburg.de>). +* map only parts of huge packfiles and LRU fragments of them. + People are starting to try git on projects with deep history + and/or many objects, e.g. Mozilla. + * upload-pack support for start fetching from any valid point on the history, not just published refs. (Erik W. Biederman ) From 220e61140711138cbab9f1e8e0a04ca4828bab27 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 10 Jun 2006 19:14:04 -0700 Subject: [PATCH 0129/2612] We ship preformtted documentation now. --- Announce | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Announce b/Announce index 3ad582cdea39b5..f74dfd2153e500 100755 --- a/Announce +++ b/Announce @@ -29,6 +29,8 @@ The latest $kind release GIT $vername is available at the usual places: http://www.kernel.org/pub/software/scm/git/ git-$vername.tar.{gz,bz2} (tarball) + git-htmldocs-$vername.tar.{gz,bz2} (preformatted documentation) + git-manpages-$vername.tar.{gz,bz2} (preformatted documentation) RPMS/\$arch/git-*-$vername-1.\$arch.rpm (RPM) From 4efc984b38cfb6fd6cce3a37f136a47f9e424109 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 10 Jun 2006 19:15:50 -0700 Subject: [PATCH 0130/2612] Convert announcement to latin-1 --- Announce | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Announce b/Announce index f74dfd2153e500..d46c8864d9c8b9 100755 --- a/Announce +++ b/Announce @@ -42,5 +42,6 @@ Changes since $previous are as follows: EOF -git log --no-merges "$previous".."$branch" | git shortlog - +git log --no-merges "$previous".."$branch" | +git shortlog | +tcs -t latin1 From 39b4cb198b0cec9b564b74ec2b40a5840da4cda2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 10 Jun 2006 19:24:12 -0700 Subject: [PATCH 0131/2612] Automate the release procedure a bit more. --- DoKernelOrg | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 93426523da2f1a..53d87bfff36190 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -35,15 +35,30 @@ case "$1" in ;; maint | master) - arch=x86_64 + case `hostname` in + hera.kernel.org) + arch=x86_64 ;; + old-hera.kernel.org) + arch=i386 ;; + *) echo >&2 "What are you talking about???" + exit 1 ;; + esac && + : >./:all.log && mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && - - echo "* Building $1" + echo "* Building $1" && git checkout "$1" && - make rpm >./:rpm.log 2>&1 && - make $J git >>./:rpm.log 2>&1 && + make rpm >>./:all.log 2>&1 && + case "$arch" in + i386) + status=$? + echo >&2 "Done -- move RPMS to the master machine." + make clean + exit $status ;; + esac && + make dist-doc >>./:all.log 2>&1 && + make $J git >>./:all.log 2>&1 && V=`./git --version | sed -e 's/git version //'` && - ln git-$V.tar.gz $G/. && + ln git-$V.tar.gz git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. && ln $HOME/rpms/RPMS/$arch/git*-$V-* $G/RPMS/$arch/. && ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. && { @@ -51,8 +66,7 @@ maint | master) /usr/local/bin/yummy $G/RPMS/$arch /usr/local/bin/yummy $G/RPMS/SRPMS : - } && - rm -fr ./:rpm.log && + } >>./:all.log 2>&1 && make clean && : ;; From ef4ede0941ecafaad6249c2bd19eb3a89f7358e0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 18 Jun 2006 21:41:01 -0700 Subject: [PATCH 0132/2612] Add pedantic --- Make | 14 ++++++++++++++ TODO | 3 +++ 2 files changed, 17 insertions(+) diff --git a/Make b/Make index e749ca48932e73..14a7644edad151 100755 --- a/Make +++ b/Make @@ -20,6 +20,20 @@ refs/heads/pu) d="prefix=$HOME/git-test" ;; esac +while case $# in 0) break ;; esac +do + case "$1" in + -pedantic) + O='-O2 -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=500 -D_BSD_SOURCE' + ;; + *) + echo >&2 "Eh $1?" + exit 1 + ;; + esac + shift +done + : ${O=-O2} make $d \ PYTHON_PATH=/usr/bin/python2.4 \ diff --git a/TODO b/TODO index 9f976cf2fd99f8..8675150846e15d 100644 --- a/TODO +++ b/TODO @@ -122,6 +122,9 @@ Technical (milder) Technical (trivial) ------------------- +* git-clone fail .git/refs/foo (Yann Dirson ) + <20060610225040.GA7766@nowhere.earth> + * git-proxy should be spawned with sh -c 'command' $1 $2. * Maybe a true git-proxy command that reads the first request From f7ad3c78273f8ad55920be24f42f99b34de43e04 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 20 Jun 2006 13:33:28 -0700 Subject: [PATCH 0133/2612] Various fixes to build scripts. --- Doit | 4 ++-- Make | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Doit b/Doit index 49b3ebe37ede60..392f8a16217237 100755 --- a/Doit +++ b/Doit @@ -17,8 +17,8 @@ do then echo "* $branch" && git checkout $branch && - Meta/Make $J all && - Meta/Make $J $nstall && + Meta/Make -- $J all && + Meta/Make -- $J $nstall && Meta/Make test && Meta/Make clean || exit $? else diff --git a/Make b/Make index 14a7644edad151..d1ae5db6566e2c 100755 --- a/Make +++ b/Make @@ -26,10 +26,17 @@ do -pedantic) O='-O2 -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=500 -D_BSD_SOURCE' ;; - *) + --) + shift + break + ;; + -*) echo >&2 "Eh $1?" exit 1 ;; + *) + break + ;; esac shift done From ba8e668defa57e6bf3acb849b6e3bcf984a2d4a9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 24 Jun 2006 19:26:52 -0700 Subject: [PATCH 0134/2612] On x86-64 define USE_PIC (at least for now) --- DoKernelOrg | 7 +++++++ Make | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/DoKernelOrg b/DoKernelOrg index 53d87bfff36190..e1bab1c23e51e3 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -1,5 +1,12 @@ #!/bin/sh +case "`uname -m 2>/dev/null`" in +x86_64) + USE_PIC=YesPlease + export USE_PIC + ;; +esac + J='-l 4 -j' G=/pub/software/scm/git && diff --git a/Make b/Make index d1ae5db6566e2c..aee6a778d1f120 100755 --- a/Make +++ b/Make @@ -1,5 +1,12 @@ #!/bin/sh +case "`uname -m 2>/dev/null`" in +x86_64) + USE_PIC=YesPlease + export USE_PIC + ;; +esac + # DDD=' -DUSE_SYMLINK_HEAD=0' # PATH=/usr/bin:/bin PATH=$HOME/bin/Linux:/usr/bin:/bin From 27a9912e2b49707b2e9d64dbf58db0d5576b97be Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 24 Jun 2006 19:31:12 -0700 Subject: [PATCH 0135/2612] update binary building --- DoKernelOrg | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index e1bab1c23e51e3..6d9aa32b42857c 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -21,7 +21,7 @@ make clean >/dev/null 2>&1 && case "$1" in '') echo "* Building all" - branches='next master maint' + branches='next master maint pu' nstalled=install for branch in $branches do @@ -44,6 +44,7 @@ case "$1" in maint | master) case `hostname` in hera.kernel.org) + narch='x86_64 i386' arch=x86_64 ;; old-hera.kernel.org) arch=i386 ;; @@ -66,11 +67,17 @@ maint | master) make $J git >>./:all.log 2>&1 && V=`./git --version | sed -e 's/git version //'` && ln git-$V.tar.gz git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. && - ln $HOME/rpms/RPMS/$arch/git*-$V-* $G/RPMS/$arch/. && + for a in $narch + do + ln $HOME/rpms/RPMS/$a/git*-$V-* $G/RPMS/$a/. + done && ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. && { # I do not know how it exits, and I do not care much. - /usr/local/bin/yummy $G/RPMS/$arch + for a in $narch + do + /usr/local/bin/yummy $G/RPMS/$a + done /usr/local/bin/yummy $G/RPMS/SRPMS : } >>./:all.log 2>&1 && From 2713b8a32c1f6841cdde722c4b930d8f1b73dd1f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Jun 2006 16:42:38 -0700 Subject: [PATCH 0136/2612] Update WI --- WI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WI b/WI index fa0d9f8ca1258e..724dedc7729b4e 100755 --- a/WI +++ b/WI @@ -41,7 +41,7 @@ then echo echo "* The 'next' branch, in addition, has these." echo - log heads/master..heads/next ^heads/cleannext + log heads/master..heads/next fi list=`git-rev-list ^refs/heads/master ^refs/heads/next refs/heads/pu 2>/dev/null` From 197c6bce75ab04f86f004de575683c164429b124 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Jun 2006 16:45:02 -0700 Subject: [PATCH 0137/2612] Update Doit --- Doit | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doit b/Doit index 392f8a16217237..7ecacbec63e9b6 100755 --- a/Doit +++ b/Doit @@ -15,14 +15,14 @@ for branch in $branches do if git rev-parse --verify refs/heads/$branch 2>/dev/null then - echo "* $branch" && + echo "** $branch" && git checkout $branch && Meta/Make -- $J all && Meta/Make -- $J $nstall && Meta/Make test && Meta/Make clean || exit $? else - echo "* No $branch" + echo "** No $branch" fi done >./:all.log 2>&1 From 30d3872dd05cb05f6d9dadabf8f2bfe7b012f0c9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 29 Jun 2006 23:42:32 -0700 Subject: [PATCH 0138/2612] Retire USE_PIC from Meta/Make since the main Makefile has enough smarts now. --- Make | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Make b/Make index aee6a778d1f120..d1ae5db6566e2c 100755 --- a/Make +++ b/Make @@ -1,12 +1,5 @@ #!/bin/sh -case "`uname -m 2>/dev/null`" in -x86_64) - USE_PIC=YesPlease - export USE_PIC - ;; -esac - # DDD=' -DUSE_SYMLINK_HEAD=0' # PATH=/usr/bin:/bin PATH=$HOME/bin/Linux:/usr/bin:/bin From 609c72e2e6a05c43881191d80e933331a67a5680 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 30 Jun 2006 12:47:27 -0700 Subject: [PATCH 0139/2612] Update to prepare catching perl-Git RPM --- DoKernelOrg | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 6d9aa32b42857c..d1504caa52345b 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -55,23 +55,36 @@ maint | master) mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && echo "* Building $1" && git checkout "$1" && + make $J git >./:all.log 2>&1 && + V=`./git --version | sed -e 's/git version //'` && make rpm >>./:all.log 2>&1 && case "$arch" in i386) status=$? - echo >&2 "Done -- move RPMS to the master machine." - make clean + case "$status" in + 0) + echo >&2 "Done -- move RPMS to the master machine." + ( + cd "$HOME/rpms/RPMS/$arch" && + tar cf "$HOME/$V.tar" *-$V-*.$a.rpm && + ls -ld $HOME/$V.tar + ) + make clean + ;; + ?) + echo >&2 "Failed with status $status" + ;; + esac exit $status ;; esac && make dist-doc >>./:all.log 2>&1 && - make $J git >>./:all.log 2>&1 && - V=`./git --version | sed -e 's/git version //'` && ln git-$V.tar.gz git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. && for a in $narch do - ln $HOME/rpms/RPMS/$a/git*-$V-* $G/RPMS/$a/. + mkdir -p "$G/RPMS/$a" + ln $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm $G/RPMS/$a/. done && - ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. && + ln $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/RPMS/SRPMS/. && { # I do not know how it exits, and I do not care much. for a in $narch From 4c11c7271890aa91be0a1b7e0d7024695aa237b0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 1 Jul 2006 23:18:56 -0700 Subject: [PATCH 0140/2612] Update procedure on old master machine. --- DoKernelOrg | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index d1504caa52345b..71c1b34e56cbfb 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -65,8 +65,9 @@ maint | master) 0) echo >&2 "Done -- move RPMS to the master machine." ( - cd "$HOME/rpms/RPMS/$arch" && - tar cf "$HOME/$V.tar" *-$V-*.$a.rpm && + cd "$HOME/rpms/" && + tar cf "$HOME/$V.tar" \ + RPMS/$arch/*-$V-*.$arch.rpm && ls -ld $HOME/$V.tar ) make clean @@ -76,7 +77,7 @@ maint | master) ;; esac exit $status ;; - esac && + esac >>./:all.log 2>&1 && make dist-doc >>./:all.log 2>&1 && ln git-$V.tar.gz git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. && for a in $narch From 331938f088af4b5c38733a3e82110ca18469fc91 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 1 Jul 2006 23:24:57 -0700 Subject: [PATCH 0141/2612] Update announce message. --- Announce | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Announce b/Announce index d46c8864d9c8b9..3e577db675b3c5 100755 --- a/Announce +++ b/Announce @@ -23,16 +23,15 @@ cc: linux-kernel@vger.kernel.org Subject: [ANNOUNCE] GIT $vername " -fmt -64 < Date: Sat, 1 Jul 2006 23:25:20 -0700 Subject: [PATCH 0142/2612] Allow passing -pedantic etc to Meta/Make --- Doit | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Doit b/Doit index 7ecacbec63e9b6..b134b84d9722d6 100755 --- a/Doit +++ b/Doit @@ -1,5 +1,6 @@ #!/bin/sh +: ${M=''} : ${J=-j2} test -z "$(git diff --cached --name-status)" || { @@ -17,9 +18,9 @@ do then echo "** $branch" && git checkout $branch && - Meta/Make -- $J all && - Meta/Make -- $J $nstall && - Meta/Make test && + Meta/Make $M -- $J all && + Meta/Make $M -- $J $nstall && + Meta/Make $M -- test && Meta/Make clean || exit $? else echo "** No $branch" From 997283a8e87179b5b87a909686869d7843c8e19a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 14 Jul 2006 00:48:34 -0700 Subject: [PATCH 0143/2612] Updates before OLS --- Gitweb | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Make | 4 ++++ TODO | 4 ++++ 3 files changed, 73 insertions(+) create mode 100755 Gitweb diff --git a/Gitweb b/Gitweb new file mode 100755 index 00000000000000..93f8080b11a127 --- /dev/null +++ b/Gitweb @@ -0,0 +1,65 @@ +#!/bin/sh + +cd gitweb && +DEST=`cd ../../index && /bin/pwd` || exit + +sed -e ' +/^our .gitbin = /s|"/usr/bin"|"/home/junio/bin/Linux"| +/^our .GIT = /s|"/usr/bin/|"/home/junio/bin/Linux/| +/^our .projectroot = /s|".*"|"/opt/packrat/playpen/public/in-place/git"| +/^our .stylesheet = /s|".*"|"/gitweb.css"| +/^our .projects_list = /s|".*"|"/opt/packrat/playpen/public/in-place/git/index/index.aux"| +' gitweb.cgi >gitweb.cgi++ + +differs= + +if test -f "$DEST/gitweb.cgi" +then + diff -u "$DEST/gitweb.cgi" gitweb.cgi++ || differs="g$differs" +else + differs="g$differs" +fi + +if test -f "$DEST/gitweb.css" +then + diff -u "$DEST/gitweb.css" gitweb.css || differs="s$differs" +else + differs="s$differs" +fi + +case "$differs" in +'') + echo Up to date. ;; +*) + while echo -n 'Update [y/N]? ' + do + read ans + case "$ans" in + [Yy]) + ans=y + break ;; + '' | [Nn]) + ans=n + break ;; + esac + done + case "$ans" in + y) ;; + *) exit + esac +esac + +case "$differs" in +*g*) + rm -f "$DEST/gitweb.cgi" + cp gitweb.cgi++ "$DEST/gitweb.cgi" + chmod +x "$DEST/gitweb.cgi" + ;; +esac + +case "$differs" in +*s*) + rm -f "$DEST/gitweb.css" + cp gitweb.css "$DEST/gitweb.css" + ;; +esac diff --git a/Make b/Make index d1ae5db6566e2c..e3fd6b0c0fc804 100755 --- a/Make +++ b/Make @@ -7,6 +7,10 @@ LANG=C LC_CTYPE=C export PATH LANG LC_CTYPE +# for now... +GIT_SVN_NO_LIB=1 +export GIT_SVN_NO_LIB + case "`git symbolic-ref HEAD`" in refs/heads/next) d="bindir=$HOME/bin/Linux gitexecdir=$HOME/bin/Linux" ;; diff --git a/TODO b/TODO index 8675150846e15d..eec7bbb10de20a 100644 --- a/TODO +++ b/TODO @@ -122,6 +122,10 @@ Technical (milder) Technical (trivial) ------------------- +* git-cherry-pick should check if the original commit message is + just a single liner, in which case it should add a LF before + appending "cherry-picked from..." message. + * git-clone fail .git/refs/foo (Yann Dirson ) <20060610225040.GA7766@nowhere.earth> From fc32377cd55d40a1fc8a455e8c847a325ce59d85 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 26 Jul 2006 13:55:33 -0700 Subject: [PATCH 0144/2612] Use SVN library interface for testing. --- Make | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Make b/Make index e3fd6b0c0fc804..d4ba9bfc0df73c 100755 --- a/Make +++ b/Make @@ -8,8 +8,8 @@ LC_CTYPE=C export PATH LANG LC_CTYPE # for now... -GIT_SVN_NO_LIB=1 -export GIT_SVN_NO_LIB +#GIT_SVN_NO_LIB=1 +#export GIT_SVN_NO_LIB case "`git symbolic-ref HEAD`" in refs/heads/next) From 49b4552a4a65068220005dc94edf68b06002f03e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 1 Aug 2006 16:02:32 -0700 Subject: [PATCH 0145/2612] Adjust to gitweb updates. --- Gitweb | 1 + 1 file changed, 1 insertion(+) diff --git a/Gitweb b/Gitweb index 93f8080b11a127..7eb8ff22f0cf1d 100755 --- a/Gitweb +++ b/Gitweb @@ -8,6 +8,7 @@ sed -e ' /^our .GIT = /s|"/usr/bin/|"/home/junio/bin/Linux/| /^our .projectroot = /s|".*"|"/opt/packrat/playpen/public/in-place/git"| /^our .stylesheet = /s|".*"|"/gitweb.css"| +/^our .logo = /s|".*"|"/git-logo.png"| /^our .projects_list = /s|".*"|"/opt/packrat/playpen/public/in-place/git/index/index.aux"| ' gitweb.cgi >gitweb.cgi++ From 0cc34eb2a0f5056b591e6d5bd8aecaf754f8d963 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Aug 2006 18:21:37 -0700 Subject: [PATCH 0146/2612] Fix manpage generation Recent Documentation/Makefile change broke the automated manpage generation. --- dodoc.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dodoc.sh b/dodoc.sh index 15926f361d67c5..d6571ba7c62890 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -90,7 +90,11 @@ cd ../doc-htmlpages && fi cd ../Documentation && -make man1="$DOCREPO/doc-manpages/man1" man7="$DOCREPO/doc-manpages/man7" \ +make \ + man1="$DOCREPO/doc-manpages/man1" \ + man7="$DOCREPO/doc-manpages/man7" \ + man1dir="$DOCREPO/doc-manpages/man1" \ + man7dir="$DOCREPO/doc-manpages/man7" \ install >../:man.log 2>&1 && cd ../doc-manpages && From d5b16cd2ccc3a9b453b5bd795ae6c41670f45fa4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Aug 2006 18:22:27 -0700 Subject: [PATCH 0147/2612] Make branches and parallelism configurable --- DoKernelOrg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 71c1b34e56cbfb..f7010336757afd 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -7,7 +7,7 @@ x86_64) ;; esac -J='-l 4 -j' +: ${J='-l 4 -j'} G=/pub/software/scm/git && cd $HOME/git && @@ -21,7 +21,7 @@ make clean >/dev/null 2>&1 && case "$1" in '') echo "* Building all" - branches='next master maint pu' + : ${branches='next master maint pu'} nstalled=install for branch in $branches do From 4c78534341e75d8b9f93b675562736bb1f51b13e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 11 Aug 2006 00:55:03 -0700 Subject: [PATCH 0148/2612] Retire resolved items. --- TODO | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/TODO b/TODO index eec7bbb10de20a..0d5f7083cc1aa0 100644 --- a/TODO +++ b/TODO @@ -49,10 +49,6 @@ Technical (heavier) Technical (milder) ------------------ -* git grep should be able to omit prefix when invoked from a - subdirectory. Either make it an option or default with - --full-name like ls-files does. - * duplicated refspec given to "fetch-pack a a a" makes it emit strange error message because it triggers the "match only once" logic. Maybe strip the dups on the input side @@ -70,43 +66,8 @@ Technical (milder) * git-daemon side support for virtual hosting. Client side is ready in 1.4.0 (Jon Loeliger <1149610100.23938.75.camel@cashmere.sps.mot.com>). -* teach git-upload-pack not to ack-continue early when the - client has roots it does not know about but it already has - learned the fork points for all the requested heads - (Ralf Baechle <20060524131022.GA11449@linux-mips.org>). - -* Per user .gitconfig across repositories -- ongoing. - -* Encourage competition between annotate vs blame. Maybe come - up with some nontrivial test cases. - * Subprojects. Try "gitlink" -- sorry, stalled. -* Rebase and checkout -m should be able to use recursive - strategy as well. These commands currently do not work across - renames. - -* Decide what to do about rebase applied to merged head. One - extreme is to allow rebase if "rev-list ours..theirs" gives - anything. This loosens the current merge-base based approach. - The other extreme is to refuse rebase if "rev-list - theirs..ours" contains any merge commit, which was discussed - on the list. - - <43CC695E.2020506@codeweavers.com> - -* Decide what the right thing to do upon an empty merge commit, - when both branches happen to have obtained the same set of - changes through different history. Not recording such keeps - the history simpler, and the next merge would soon create a - true merge commit anyway, but this does not feel quite right. - - <20060114021800.4688.qmail@web31803.mail.mud.yahoo.com> - -* diff stopping at the first output; qgit wants to know if this - tree has any A or D from the other tree and nothing else. - Would help internal tree-diff in rev-list as well. - * daemon --strict-symlink. * daemon --base-path does not apply automatically to whitelist From 732c133e0d068d8b049cdd837fbac98b91bb31c4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 7 Sep 2006 04:28:44 -0700 Subject: [PATCH 0149/2612] gitweb has favicon --- Gitweb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Gitweb b/Gitweb index 7eb8ff22f0cf1d..585082cd370bf8 100755 --- a/Gitweb +++ b/Gitweb @@ -9,6 +9,7 @@ sed -e ' /^our .projectroot = /s|".*"|"/opt/packrat/playpen/public/in-place/git"| /^our .stylesheet = /s|".*"|"/gitweb.css"| /^our .logo = /s|".*"|"/git-logo.png"| +/^our .favicon = /s|".*"|"/git-favicon.png"| /^our .projects_list = /s|".*"|"/opt/packrat/playpen/public/in-place/git/index/index.aux"| ' gitweb.cgi >gitweb.cgi++ @@ -28,6 +29,14 @@ else differs="s$differs" fi +if test -f "$DEST/git-favicon.png" +then + cmp "$DEST/git-favicon.png" git-favicon.png >/dev/null || + differs="i$differs" +else + differs="i$differs" +fi + case "$differs" in '') echo Up to date. ;; @@ -64,3 +73,10 @@ case "$differs" in cp gitweb.css "$DEST/gitweb.css" ;; esac + +case "$differs" in +*i*) + rm -f "$DEST/git-favicon.png" + cp git-favicon.png "$DEST/git-favicon.png" + ;; +esac From ed0c35f7cad471858d2c8d9657e01e61bace462d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 7 Sep 2006 04:29:08 -0700 Subject: [PATCH 0150/2612] Allow -O0 -pedantic --- Make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Make b/Make index d4ba9bfc0df73c..c2c55990028e90 100755 --- a/Make +++ b/Make @@ -28,7 +28,7 @@ while case $# in 0) break ;; esac do case "$1" in -pedantic) - O='-O2 -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=500 -D_BSD_SOURCE' + O="$O -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=500 -D_BSD_SOURCE" ;; --) shift From 273451e13a16a077b780e2ef040e4a14e2434f37 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 7 Sep 2006 04:29:25 -0700 Subject: [PATCH 0151/2612] TODO: format-patch? --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 0d5f7083cc1aa0..6edb86085ab3ea 100644 --- a/TODO +++ b/TODO @@ -83,6 +83,9 @@ Technical (milder) Technical (trivial) ------------------- +* log-tree.c: pad sequence numbers with leading 0 if a series is + larger than 9, around ll.133? + * git-cherry-pick should check if the original commit message is just a single liner, in which case it should add a LF before appending "cherry-picked from..." message. From 03adf42c988195b50e1a1935ba5fcbc39b2b029b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 7 Sep 2006 04:29:48 -0700 Subject: [PATCH 0152/2612] demeter updates. --- DoKernelOrg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index f7010336757afd..bdfa0796b56d43 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -46,13 +46,12 @@ maint | master) hera.kernel.org) narch='x86_64 i386' arch=x86_64 ;; - old-hera.kernel.org) + demeter.kernel.org|demeter|old-hera.kernel.org) arch=i386 ;; *) echo >&2 "What are you talking about???" exit 1 ;; esac && : >./:all.log && - mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && echo "* Building $1" && git checkout "$1" && make $J git >./:all.log 2>&1 && @@ -79,6 +78,7 @@ maint | master) exit $status ;; esac >>./:all.log 2>&1 && make dist-doc >>./:all.log 2>&1 && + mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && ln git-$V.tar.gz git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. && for a in $narch do From ba467e080011108eb6813eb3b79380cc66565802 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 5 Oct 2006 22:00:50 -0700 Subject: [PATCH 0153/2612] Gitweb: use gitweb_config.perl --- Gitweb | 17 +++++------------ gitweb_config.perl | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 gitweb_config.perl diff --git a/Gitweb b/Gitweb index 585082cd370bf8..5a48b7e3868980 100755 --- a/Gitweb +++ b/Gitweb @@ -1,23 +1,16 @@ #!/bin/sh +G=/opt/packrat/playpen/public/in-place/git +Meta/Make GITWEB_CONFIG=$G/index/gitweb_config.perl gitweb/gitweb.cgi + cd gitweb && DEST=`cd ../../index && /bin/pwd` || exit -sed -e ' -/^our .gitbin = /s|"/usr/bin"|"/home/junio/bin/Linux"| -/^our .GIT = /s|"/usr/bin/|"/home/junio/bin/Linux/| -/^our .projectroot = /s|".*"|"/opt/packrat/playpen/public/in-place/git"| -/^our .stylesheet = /s|".*"|"/gitweb.css"| -/^our .logo = /s|".*"|"/git-logo.png"| -/^our .favicon = /s|".*"|"/git-favicon.png"| -/^our .projects_list = /s|".*"|"/opt/packrat/playpen/public/in-place/git/index/index.aux"| -' gitweb.cgi >gitweb.cgi++ - differs= if test -f "$DEST/gitweb.cgi" then - diff -u "$DEST/gitweb.cgi" gitweb.cgi++ || differs="g$differs" + diff -u "$DEST/gitweb.cgi" gitweb.cgi || differs="g$differs" else differs="g$differs" fi @@ -62,7 +55,7 @@ esac case "$differs" in *g*) rm -f "$DEST/gitweb.cgi" - cp gitweb.cgi++ "$DEST/gitweb.cgi" + cp gitweb.cgi "$DEST/gitweb.cgi" chmod +x "$DEST/gitweb.cgi" ;; esac diff --git a/gitweb_config.perl b/gitweb_config.perl new file mode 100644 index 00000000000000..7d847cb5e4e163 --- /dev/null +++ b/gitweb_config.perl @@ -0,0 +1,17 @@ +# + +our $G = '/opt/packrat/playpen/public/in-place/git'; +$GIT = '/home/junio/bin/Linux/git'; +$projectroot = $G; +$site_name = 'Gitster Local'; +$stylesheet = '/gitweb.css'; +$logo = '/git-logo.png'; +$favicon = '/git-favicon.png'; +$projects_list = "$G/index/index.aux"; + +while (my ($k, $v) = each %feature) { + $feature{$k}{'override'} = 1; +} +$feature{'pathinfo'}{'override'} = 0; +$feature{'pathinfo'}{'default'} = [1]; +1; From 1fa008d526fa4ba94d089da16d2a335c96439d96 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 5 Oct 2006 22:01:15 -0700 Subject: [PATCH 0154/2612] Recent issues --- TODO | 92 ++++++++++++++++++++++++++++-------------------------------- 1 file changed, 43 insertions(+), 49 deletions(-) diff --git a/TODO b/TODO index 6edb86085ab3ea..9d2430074cd5d6 100644 --- a/TODO +++ b/TODO @@ -6,44 +6,57 @@ The GIT To-Do File http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO -What to expect from now on -========================== +Recent issues +------------- -This is written in a form of to-do list for me, so if I say -"accept patch", it means I do not currently plan to do that -myself. People interested in seeing it materialize please take -a hint. Also whatever I marked "Perhaps" do not have to happen -if ever -- only if somebody cares enough and submits a clean -patch, perhaps ;-). +Franck Bui-Huu +Message-ID: <450EABD0.1040102@innova-card.com> +Repeated requests against git-daemon makes it stuck -Design issues -------------- +[jc: does not reproduce easily for me; has anybody seen it?] -* tree entries in index? -- sorry, stalled +From: Shawn Pearce +Message-ID: <20060926215745.GC8177@spearce.org> -* "intent to add" index entries? -- together with the above - needs rethinking. +git-mirror (reverse of git-push --all). -* Plug-in file-level merges. On the other hand, we may not even - need this; just tell people to run "xxdiff -U" on the working - tree files (or kompare). +[jc: any progress?] +From: Junio C Hamano +Message-ID: <7v7izrzpk2.fsf@assigned-by-dhcp.cox.net> -Technical (heavier) -------------------- +Deal with rfc2822-invalid author mail address in send-email. + +[jc: forgot to apply?] + + +From: Nicolas Pitre +Subject: [PATCH 8/6] let the GIT native protocol use offsets to delta base when + +[jc: applied all but I suspect git-push side hasn't been converted?] + +From: Shawn Pearce +Message-ID: <20060930045037.GB18479@spearce.org> + +"git ref-log" command to interact with ref-log? + +[jc: not much interest?] + +From: Stefan Richter +Message-ID: <4523EC14.6070806@s5r6.in-berlin.de> -* Libification. There are many places "run once" mentality is - ingrained in the management of basic data structures, which - need to be fixed. [Matthias Urlichs was already working on - this: , but I - do not know what happened to his efforts] +AsciiDoc 8 does not grok documents written for AsciiDoc 7 out of +the box. -* Lazy clones that can be controlled by the user, ranging from - totally on-demand a la CVS/SVN to "cache down to this old - commit so that I can make full use of git on at least recent - history". This need a lot of work in making tools to exit - gracefully when they hit unavailable objects while offline. +[jc: status?] + +From: Josh Triplett +Message-ID: <451A30E4.50801@freedesktop.org> + +git-split + +[jc: no response to the initial review comments] Technical (milder) @@ -63,33 +76,18 @@ Technical (milder) the history, not just published refs. (Erik W. Biederman ) -* git-daemon side support for virtual hosting. Client side - is ready in 1.4.0 (Jon Loeliger <1149610100.23938.75.camel@cashmere.sps.mot.com>). - -* Subprojects. Try "gitlink" -- sorry, stalled. - * daemon --strict-symlink. -* daemon --base-path does not apply automatically to whitelist - somehow feels wrong. If somebody cares enough, accept - patches. - -* Perhaps detect cloning request in upload-pack and cache the - result for next cloning request until any of our refs change. - * Maybe grok PGP signed text/plain in applymbox as well. - Technical (trivial) ------------------- +* Mbx (not mbox) support for git-mailsplit. + * log-tree.c: pad sequence numbers with leading 0 if a series is larger than 9, around ll.133? -* git-cherry-pick should check if the original commit message is - just a single liner, in which case it should add a LF before - appending "cherry-picked from..." message. - * git-clone fail .git/refs/foo (Yann Dirson ) <20060610225040.GA7766@nowhere.earth> @@ -100,10 +98,6 @@ Technical (trivial) * test scripts for the relative directory path stuff. -* In a freshly created empty repository, `git fetch foo:bar` - works OK, but `git checkout bar` afterwards does not (missing - `.git/HEAD`). - Local Variables: mode: text From d84d2650ecfc00e8de569988017a237b7c03ad9f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 5 Oct 2006 23:28:43 -0700 Subject: [PATCH 0155/2612] Add recent issues --- TODO | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 9d2430074cd5d6..6e0c1595a39024 100644 --- a/TODO +++ b/TODO @@ -9,7 +9,14 @@ The GIT To-Do File Recent issues ------------- -Franck Bui-Huu +From: A Large Angry SCM +Subject: Notes on Using Git with Subprojects +Message-ID: <45196628.9010107@gmail.com> + +[jc: a very nice write-up of a subprojects workflow. I do not + remember if it produced any actionable items, though] + +From: Franck Bui-Huu Message-ID: <450EABD0.1040102@innova-card.com> Repeated requests against git-daemon makes it stuck @@ -30,7 +37,6 @@ Deal with rfc2822-invalid author mail address in send-email. [jc: forgot to apply?] - From: Nicolas Pitre Subject: [PATCH 8/6] let the GIT native protocol use offsets to delta base when @@ -41,7 +47,7 @@ Message-ID: <20060930045037.GB18479@spearce.org> "git ref-log" command to interact with ref-log? -[jc: not much interest?] +[jc: not much interest from users?] From: Stefan Richter Message-ID: <4523EC14.6070806@s5r6.in-berlin.de> From 9f090dbc8d4a9b054b816b10d5614e4bc683c71d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 17 Oct 2006 23:57:52 -0700 Subject: [PATCH 0156/2612] To do update (tad old) --- TODO | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/TODO b/TODO index 6e0c1595a39024..ebf760a1f40990 100644 --- a/TODO +++ b/TODO @@ -64,10 +64,46 @@ git-split [jc: no response to the initial review comments] +From: Sean +Subject: [RFC PATCH] Add WEBDAV timeout to http-fetch. +Message-ID: + +Use CURLOPT_TIMEOUT to recover from stuck read() early. + +[jc: the trouble that triggered this patch was WEBDAV on the + server side not responding and the proposed commit log says so, + but it seems that the patch is applicable and useful for other + requests. I suspect ls_remote() call should be removed from + fetch_indices(). ] + +From: Luben Tuikov +Subject: [PATCH] gitweb: Convert Content-Disposition filenames into qtext +Message-ID: <20061006191801.68649.qmail@web31815.mail.mud.yahoo.com> + +Use qtext quoting for Content-Disposition. + +[jc: the purpose of the patch was murky -- we wanted to avoid + breaking the parsing of filename="value" by underquoting, but + I think it is also prudent not to throw locally unsafe characters + in the suggested filename to be used, so replacement regexp + would need to be updated from the one proposed in the original + patch.] + + +From: Linus Torvalds +Subject: Re: git show and gitweb gives different result for kernel +Message-ID: + +Maybe allow gitweb to show diff with any parent and diff --cc, +not just diff with the first parent for a merge. Technical (milder) ------------------ +* pack-refs --all and make it not pack active branches. + +* redo git-annotate as synonym to "git-blame -c". + * duplicated refspec given to "fetch-pack a a a" makes it emit strange error message because it triggers the "match only once" logic. Maybe strip the dups on the input side From 2cdd95915c60917d616eccfd18841279cfd192e2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 17 Oct 2006 23:58:25 -0700 Subject: [PATCH 0157/2612] snapshot --- Gitweb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Gitweb b/Gitweb index 5a48b7e3868980..97afbd85c9d0cd 100755 --- a/Gitweb +++ b/Gitweb @@ -1,7 +1,6 @@ #!/bin/sh -G=/opt/packrat/playpen/public/in-place/git -Meta/Make GITWEB_CONFIG=$G/index/gitweb_config.perl gitweb/gitweb.cgi +Meta/Make gitweb/gitweb.cgi cd gitweb && DEST=`cd ../../index && /bin/pwd` || exit From e9a3deab3a0d789852506e239d710aff494a8ce2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 18 Oct 2006 13:16:44 -0700 Subject: [PATCH 0158/2612] for better release testing... --- Make | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/Make b/Make index c2c55990028e90..d17d5077a4e8e8 100755 --- a/Make +++ b/Make @@ -2,7 +2,9 @@ # DDD=' -DUSE_SYMLINK_HEAD=0' # PATH=/usr/bin:/bin -PATH=$HOME/bin/Linux:/usr/bin:/bin + +G=/opt/packrat/playpen/public/in-place/git/index/gitweb_config.perl +PATH=$HOME/git-master/bin:/usr/bin:/bin LANG=C LC_CTYPE=C export PATH LANG LC_CTYPE @@ -11,15 +13,19 @@ export PATH LANG LC_CTYPE #GIT_SVN_NO_LIB=1 #export GIT_SVN_NO_LIB -case "`git symbolic-ref HEAD`" in -refs/heads/next) - d="bindir=$HOME/bin/Linux gitexecdir=$HOME/bin/Linux" ;; -refs/heads/maint) - d="prefix=$HOME/git-maint" ;; -refs/heads/master) - d="prefix=$HOME/git-master" ;; -refs/heads/pu) - d="prefix=$HOME/git-pu" ;; +head=`git symbolic-ref HEAD` && +branch=`expr "$head" : 'refs/heads/\(.*\)'` && +case "$branch" in +next | maint | master | pu) + d="prefix=$HOME/git-$branch" ;; +snap) + v=`git describe HEAD` + expr "$v" : '.*-g[0-9a-f]*$' >/dev/null && { + echo >&2 "You are on 'snap' but $v is not an official version." + exit 1 + } + d="prefix=$HOME/git-snap-$v" + ;; *) d="prefix=$HOME/git-test" ;; esac @@ -47,6 +53,7 @@ done : ${O=-O2} make $d \ + GITWEB_CONFIG=$G \ PYTHON_PATH=/usr/bin/python2.4 \ CFLAGS="$O -Wall -Wdeclaration-after-statement -g" \ WITH_SEND_EMAIL=YesPlease \ From dec92c45fe4eaf1ef18ae68b087c29e985f2efcb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 29 Oct 2006 01:47:04 -0700 Subject: [PATCH 0159/2612] TODO updates. --- Announce | 4 +-- Make | 3 +- TODO | 91 +++++++++++++++++++++++++------------------------------- 3 files changed, 44 insertions(+), 54 deletions(-) diff --git a/Announce b/Announce index 3e577db675b3c5..42bf5824e9a484 100755 --- a/Announce +++ b/Announce @@ -42,5 +42,5 @@ Changes since $previous are as follows: EOF git log --no-merges "$previous".."$branch" | -git shortlog | -tcs -t latin1 +git shortlog + diff --git a/Make b/Make index d17d5077a4e8e8..8097b628352580 100755 --- a/Make +++ b/Make @@ -30,6 +30,8 @@ snap) d="prefix=$HOME/git-test" ;; esac +: ${O=-O2} + while case $# in 0) break ;; esac do case "$1" in @@ -51,7 +53,6 @@ do shift done -: ${O=-O2} make $d \ GITWEB_CONFIG=$G \ PYTHON_PATH=/usr/bin/python2.4 \ diff --git a/TODO b/TODO index ebf760a1f40990..d33211a2bb1c80 100644 --- a/TODO +++ b/TODO @@ -9,17 +9,46 @@ The GIT To-Do File Recent issues ------------- -From: A Large Angry SCM -Subject: Notes on Using Git with Subprojects -Message-ID: <45196628.9010107@gmail.com> +From: Karl Hasselström +Message-ID: <20061026172603.GA21256@diana.vm.bytemark.co.uk> -[jc: a very nice write-up of a subprojects workflow. I do not - remember if it produced any actionable items, though] +It might make sense to make --use-separate-remote the default. + +[jc: The only downside that I can think of is that it affects me +or anybody who works on more than one machine on multiple +branches slightly negatively. + +But that is just a minor inconvenience to a minority. Most of +the world follow others' repositories, and defaulting to use +separate-remotes would help them a lot.] + +From: Junio C Hamano + +commit walkers still have issues with packed and then pruned +refs. + +From: Junio C Hamano +Message-ID: <7vk62npipb.fsf@assigned-by-dhcp.cox.net> + +merge-recursive needs to be adjusted for loosening of "working +file will be clobbered by merge" check in unpack-trees. + +[jc: I've fixed up what I could find but this needs to be +handled a bit carefully. ] + +From: Nicolas Pitre +Message-ID: + +Race between 'repack -a -d' and 'index-pack --stdin' (or +'fetch-pack --keep'). + +[jc: Shawn's .keep to mark packs that wouldn't be repacked would +work rather nicely when completed.] From: Franck Bui-Huu Message-ID: <450EABD0.1040102@innova-card.com> -Repeated requests against git-daemon makes it stuck +Repeated requests against git-daemon makes it stuck under --syslog [jc: does not reproduce easily for me; has anybody seen it?] @@ -28,14 +57,7 @@ Message-ID: <20060926215745.GC8177@spearce.org> git-mirror (reverse of git-push --all). -[jc: any progress?] - -From: Junio C Hamano -Message-ID: <7v7izrzpk2.fsf@assigned-by-dhcp.cox.net> - -Deal with rfc2822-invalid author mail address in send-email. - -[jc: forgot to apply?] +[jc: may want the finished version for inclusion] From: Nicolas Pitre Subject: [PATCH 8/6] let the GIT native protocol use offsets to delta base when @@ -55,40 +77,7 @@ Message-ID: <4523EC14.6070806@s5r6.in-berlin.de> AsciiDoc 8 does not grok documents written for AsciiDoc 7 out of the box. -[jc: status?] - -From: Josh Triplett -Message-ID: <451A30E4.50801@freedesktop.org> - -git-split - -[jc: no response to the initial review comments] - -From: Sean -Subject: [RFC PATCH] Add WEBDAV timeout to http-fetch. -Message-ID: - -Use CURLOPT_TIMEOUT to recover from stuck read() early. - -[jc: the trouble that triggered this patch was WEBDAV on the - server side not responding and the proposed commit log says so, - but it seems that the patch is applicable and useful for other - requests. I suspect ls_remote() call should be removed from - fetch_indices(). ] - -From: Luben Tuikov -Subject: [PATCH] gitweb: Convert Content-Disposition filenames into qtext -Message-ID: <20061006191801.68649.qmail@web31815.mail.mud.yahoo.com> - -Use qtext quoting for Content-Disposition. - -[jc: the purpose of the patch was murky -- we wanted to avoid - breaking the parsing of filename="value" by underquoting, but - I think it is also prudent not to throw locally unsafe characters - in the suggested filename to be used, so replacement regexp - would need to be updated from the one proposed in the original - patch.] - +[jc: limbo?] From: Linus Torvalds Subject: Re: git show and gitweb gives different result for kernel @@ -97,12 +86,12 @@ Message-ID: Maybe allow gitweb to show diff with any parent and diff --cc, not just diff with the first parent for a merge. +[jc: Jakub is interested in it] + Technical (milder) ------------------ -* pack-refs --all and make it not pack active branches. - -* redo git-annotate as synonym to "git-blame -c". +* pickaxe perhaps needs to refcount the origin structure. * duplicated refspec given to "fetch-pack a a a" makes it emit strange error message because it triggers the "match only From 16a4568a8292605cb688d0e26c65aea8850f22d4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 5 Nov 2006 23:59:41 -0800 Subject: [PATCH 0160/2612] TODO updates (remove resolved issues) --- TODO | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/TODO b/TODO index d33211a2bb1c80..bb752d7e890e04 100644 --- a/TODO +++ b/TODO @@ -27,24 +27,6 @@ From: Junio C Hamano commit walkers still have issues with packed and then pruned refs. -From: Junio C Hamano -Message-ID: <7vk62npipb.fsf@assigned-by-dhcp.cox.net> - -merge-recursive needs to be adjusted for loosening of "working -file will be clobbered by merge" check in unpack-trees. - -[jc: I've fixed up what I could find but this needs to be -handled a bit carefully. ] - -From: Nicolas Pitre -Message-ID: - -Race between 'repack -a -d' and 'index-pack --stdin' (or -'fetch-pack --keep'). - -[jc: Shawn's .keep to mark packs that wouldn't be repacked would -work rather nicely when completed.] - From: Franck Bui-Huu Message-ID: <450EABD0.1040102@innova-card.com> @@ -59,11 +41,6 @@ git-mirror (reverse of git-push --all). [jc: may want the finished version for inclusion] -From: Nicolas Pitre -Subject: [PATCH 8/6] let the GIT native protocol use offsets to delta base when - -[jc: applied all but I suspect git-push side hasn't been converted?] - From: Shawn Pearce Message-ID: <20060930045037.GB18479@spearce.org> @@ -91,8 +68,6 @@ not just diff with the first parent for a merge. Technical (milder) ------------------ -* pickaxe perhaps needs to refcount the origin structure. - * duplicated refspec given to "fetch-pack a a a" makes it emit strange error message because it triggers the "match only once" logic. Maybe strip the dups on the input side @@ -103,6 +78,8 @@ Technical (milder) People are starting to try git on projects with deep history and/or many objects, e.g. Mozilla. + [jc: ping Shawn or give up and do this myself.] + * upload-pack support for start fetching from any valid point on the history, not just published refs. (Erik W. Biederman ) From 689311f6899bbf7c5c17993b42778f4bf60df826 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 6 Dec 2006 13:57:10 -0800 Subject: [PATCH 0161/2612] Update XOPEN_SOURCE to 600 --- Make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Make b/Make index 8097b628352580..c92deda2590fbf 100755 --- a/Make +++ b/Make @@ -36,7 +36,7 @@ while case $# in 0) break ;; esac do case "$1" in -pedantic) - O="$O -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=500 -D_BSD_SOURCE" + O="$O -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=600 -D_BSD_SOURCE" ;; --) shift From 981b62534612f0f1a97bb419ecb4afcd4b40e415 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 6 Dec 2006 19:20:35 -0800 Subject: [PATCH 0162/2612] Add git-topic script. Signed-off-by: Junio C Hamano --- git-topic.perl | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100755 git-topic.perl diff --git a/git-topic.perl b/git-topic.perl new file mode 100755 index 00000000000000..4c2a83db1681c4 --- /dev/null +++ b/git-topic.perl @@ -0,0 +1,95 @@ +#!/usr/bin/perl -w +# +# Copyright (c) 2006 Junio C Hamano +# + +use strict; +use Getopt::Long; + +my $topic_pattern = '??/*'; +my $base = 'next'; +my @stage = qw(next pu); +my @mark = ('.', '?', '-', '+'); +my $all = 0; + +my @custom_stage; +my @custom_mark; +GetOptions("topic=s" => \$topic_pattern, + "base=s" => \$base, + "stage=s" => \@custom_stage, + "mark=s" => \@custom_mark, + "all!" => \$all) + or die; + +if (@custom_stage) { @stage = @custom_stage; } +if (@custom_mark) { @mark = @custom_mark; } + +sub read_revs_short { + my ($bottom, $top) = @_; + my @revs; + open(REVS, '-|', qw(git rev-list --no-merges), "$bottom..$top") + or die; + while () { + chomp; + push @revs, $_; + } + close(REVS); + return @revs; +} + +sub read_revs { + my ($bottom, $top, $mask) = @_; + my @revs; + open(REVS, '-|', qw(git rev-list --pretty=oneline --no-merges), + "$bottom..$top") + or die; + while () { + chomp; + my ($sha1, $topic) = /^([0-9a-f]{40}) (.*)$/; + push @revs, [$sha1, $topic, $mask]; + } + close(REVS); + return @revs; +} + +sub wrap_print { + my ($prefix, $string) = @_; + format STDOUT = + @ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + $prefix, $string + ~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + $string +. + write; +} + +open(TOPIC, '-|', qw(git for-each-ref), + '--sort=-authordate', + '--format=%(objectname) %(authordate) %(refname)', + "refs/heads/$topic_pattern") + or die; + +while () { + chomp; + my ($sha1, $date, $topic) = m|^([0-9a-f]{40})\s(.*?)\srefs/heads/(.+)$| + or next; + my @revs = read_revs($base, $sha1, (1<<@stage)-1); + next unless (@revs || $all); + + my %revs = map { $_->[0] => $_ } @revs; # fast index + for (my $i = 0; $i < @stage; $i++) { + for my $item (read_revs_short($stage[$i], $sha1)) { + if (exists $revs{$item}) { + $revs{$item}[2] &= ~(1 << $i); + } + } + } + print "* $topic ($date)\n"; + for my $item (@revs) { + my $mark = $item->[2]; + if ($mark < @mark) { + $mark = $mark[$mark]; + } + wrap_print($mark, $item->[1]); + } +} From 606e7205a3ff52247a0925fe5836b732836396c3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 8 Dec 2006 14:16:24 -0800 Subject: [PATCH 0163/2612] Now git-topic is a bit more usable and close enough to TO script. --- TO | 5 +++-- git-topic.perl | 56 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/TO b/TO index 169f1fab2939df..ad00b30651d467 100755 --- a/TO +++ b/TO @@ -111,8 +111,9 @@ Using Topic Branches Some important disciplines first. - * Once a topic branch forks from "master", never merge "master" - updates into the topic branch. + * Once a topic branch forks from "master", avoid merging "master" + updates into the topic branch unless necessary to resolve conflicts + early. * Once a topic branch is fully cooked and merged into "master", delete it. If you need to build on top of it to correct diff --git a/git-topic.perl b/git-topic.perl index 4c2a83db1681c4..2a9c70231f8d84 100755 --- a/git-topic.perl +++ b/git-topic.perl @@ -25,9 +25,9 @@ if (@custom_mark) { @mark = @custom_mark; } sub read_revs_short { - my ($bottom, $top) = @_; + my (@args) = @_; my @revs; - open(REVS, '-|', qw(git rev-list --no-merges), "$bottom..$top") + open(REVS, '-|', qw(git rev-list --no-merges), @args) or die; while () { chomp; @@ -52,12 +52,45 @@ sub read_revs { return @revs; } +sub rebase_marker { + my ($topic, $stage, $in_next) = @_; + my @not_in_topic = read_revs_short('^master', "^$topic", "$stage"); + + # @$in_next is what is in $stage but not in $base. + # @not_in_topic excludes what came from $topic from @$in_next. + # $topic can be rebased if these two set matches, because + # no commits in $topic has been merged to $stage yet. + if (@not_in_topic != @$in_next) { + # we cannot rebase it anymore + return ' '; + } + if (read_revs_short('master', "^$topic")) { + # there is something that is in master but not in topic. + return '^'; + } + # topic is up to date. + return '*'; +} + +sub describe_topic { + my ($topic) = @_; + open(CONF, '-|', qw(git repo-config --get), + "branch.$topic.description") + or die; + my $it = join('',); + close(CONF); + chomp($it); + if ($it) { + wrap_print(" $it"); + } +} + sub wrap_print { - my ($prefix, $string) = @_; + my ($string) = @_; format STDOUT = - @ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - $prefix, $string - ~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + $string + ~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $string . write; @@ -69,6 +102,8 @@ sub wrap_print { "refs/heads/$topic_pattern") or die; +my @in_next = read_revs_short('^master', $stage[0]); + while () { chomp; my ($sha1, $date, $topic) = m|^([0-9a-f]{40})\s(.*?)\srefs/heads/(.+)$| @@ -78,18 +113,21 @@ sub wrap_print { my %revs = map { $_->[0] => $_ } @revs; # fast index for (my $i = 0; $i < @stage; $i++) { - for my $item (read_revs_short($stage[$i], $sha1)) { + for my $item (read_revs_short("^$stage[$i]", $sha1)) { if (exists $revs{$item}) { $revs{$item}[2] &= ~(1 << $i); } } } - print "* $topic ($date)\n"; + + print '*' . rebase_marker($sha1, $stage[0], \@in_next); + print " $topic ($date)\n"; + describe_topic($topic); for my $item (@revs) { my $mark = $item->[2]; if ($mark < @mark) { $mark = $mark[$mark]; } - wrap_print($mark, $item->[1]); + wrap_print("$mark $item->[1]"); } } From a94df759cb775a9f9ec98e8e2a1dfd206af1079d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 14 Dec 2006 03:06:31 -0800 Subject: [PATCH 0164/2612] git-topic updates. --- git-topic.perl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/git-topic.perl b/git-topic.perl index 2a9c70231f8d84..4a89e24acd707d 100755 --- a/git-topic.perl +++ b/git-topic.perl @@ -121,7 +121,14 @@ sub wrap_print { } print '*' . rebase_marker($sha1, $stage[0], \@in_next); - print " $topic ($date)\n"; + my $count = ""; + if (1 < @revs) { + $count = " " . (scalar @revs) . " commits"; + } + elsif (@revs) { + $count = " 1 commit"; + } + print " $topic ($date)$count\n"; describe_topic($topic); for my $item (@revs) { my $mark = $item->[2]; From fc70b3b9ba185847223c3366adeeae3c4df1148e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 20 Dec 2006 12:23:24 -0800 Subject: [PATCH 0165/2612] Meta/Make: remove _BSD_SOURCE from -pedantic --- Make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Make b/Make index c92deda2590fbf..fabe6418d15c25 100755 --- a/Make +++ b/Make @@ -36,7 +36,7 @@ while case $# in 0) break ;; esac do case "$1" in -pedantic) - O="$O -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=600 -D_BSD_SOURCE" + O="$O -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=600" ;; --) shift From 58fab02a67855e11f09c4473986094a62e283f8c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 20 Dec 2006 12:23:49 -0800 Subject: [PATCH 0166/2612] WI/WC updates. --- WC | 14 ++++++++++++++ WI | 20 +------------------- 2 files changed, 15 insertions(+), 19 deletions(-) create mode 100755 WC diff --git a/WC b/WC new file mode 100755 index 00000000000000..c1262970e879e9 --- /dev/null +++ b/WC @@ -0,0 +1,14 @@ +#!/bin/sh +# Prepare "What's cooking in git.git" + +master_at=$(git rev-parse --verify refs/heads/master) +next_at=$(git rev-parse --verify refs/heads/next) + +echo "To: git@vger.kernel.org" +echo "Subject: What's cooking in git.git (topics)" +echo "X-master-at: $master_at" +echo "X-next-at: $next_at" + +Meta/git-topic.perl --base=master | sed -e 's/^\*./*/' + + diff --git a/WI b/WI index 724dedc7729b4e..d586477b1d18af 100755 --- a/WI +++ b/WI @@ -11,7 +11,7 @@ log () { } echo "To: git@vger.kernel.org" -echo "Subject: What's in git.git" +echo "Subject: What's in git.git (stable)" echo "X-maint-at: $maint_at" echo "X-master-at: $master_at" @@ -34,21 +34,3 @@ then echo log $tagged heads/master fi - -list=`git-rev-list refs/heads/master..refs/heads/next 2>/dev/null` -if test -n "$list" -then - echo - echo "* The 'next' branch, in addition, has these." - echo - log heads/master..heads/next -fi - -list=`git-rev-list ^refs/heads/master ^refs/heads/next refs/heads/pu 2>/dev/null` -if test -n "$list" -then - echo - echo "* The 'pu' branch, in addition, has these." - echo - log ^heads/master heads/next..heads/pu -fi From d74c6543f3dac4bb6bcc7d17482d2b1f3d7c7354 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 25 Dec 2006 22:21:09 -0800 Subject: [PATCH 0167/2612] Add --no-fetch option to KO --- KO | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/KO b/KO index 546069915c7ea2..2a6f301250ff7f 100755 --- a/KO +++ b/KO @@ -3,7 +3,8 @@ # Not for general consumption; a script I used to make sure # I do not accidentally push a rewound master to public. -git fetch ko +case "$1" in --no-fetch) shift ;; *) git fetch ko ;; esac + mb=$(git merge-base ko-master master) h=$(git rev-parse $mb ko-master | sort -u | wc -l) if test "$h" != 1 From 32e72b6e13bfc711709bd34abff4f8422d83d8f8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 25 Dec 2006 22:21:22 -0800 Subject: [PATCH 0168/2612] Add introductory comments to WC --- WC | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/WC b/WC index c1262970e879e9..a4936154789448 100755 --- a/WC +++ b/WC @@ -4,10 +4,19 @@ master_at=$(git rev-parse --verify refs/heads/master) next_at=$(git rev-parse --verify refs/heads/next) -echo "To: git@vger.kernel.org" -echo "Subject: What's cooking in git.git (topics)" -echo "X-master-at: $master_at" -echo "X-next-at: $next_at" + +cat < Date: Wed, 27 Dec 2006 21:33:28 -0800 Subject: [PATCH 0169/2612] 1.5.0 release notes. --- v1.5.0.txt | 580 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 580 insertions(+) create mode 100644 v1.5.0.txt diff --git a/v1.5.0.txt b/v1.5.0.txt new file mode 100644 index 00000000000000..6fc1ff7b00cec4 --- /dev/null +++ b/v1.5.0.txt @@ -0,0 +1,580 @@ +Major changes that are not news +------------------------------- + +There were a handful big changes that happened before this major +release. + +This section is for people who are upgrading from ancient +versions. Some of them are one-way street upgrades -- once you +use the feature your repository cannot be used with ancient git. + + - There is a new configuration variable core.legacyheaders that + changes the format of loose objects to more efficient to pack + and send out of the repository over git native protocol. + However, this format cannot be read by git older than v1.4.2; + people fetching from your repository using older clients over + dumb transports (e.g. http) will also be affected. This is + not enabled by default. + + - Another configuration repack.usedeltabaseoffset further + allows packfile to be created in more space efficient format, + which cannot be read by git older than v1.4.3. This is not + enabled by default. + + - 'git pack-refs' appeared in v1.4.4; this command allows tags + to be accessed much more efficiently than the traditional + 'one-file-per-tag' format. Older git-native client can fetch + from a repository that packed its tags, but older dumb + transports cannot. This is done by an explicit user action, + either by use of "git pack-refs --prune" command or by use of + "git gc" command. + + - 'git -p' to paginate anything -- many commands do pagination + by default on a tty. Introduced between v1.4.1 and v1.4.2; + this may surprise old timer users. + + - 'git archive' superseded 'git tar' in v1.4.3; + + - 'git cvsserver' was new invention in v1.3.0; + + - 'git repo-config', 'git grep', 'git rebase' and 'gitk' were + seriously enhanced during v1.4.0 timeperiod. + + - 'gitweb' became part of git.git during v1.4.0 timeperiod and + seriously modified since then. + + - reflog is an v1.4.0 invention. + + +Updates in v1.5.0 since v1.4.4 series +------------------------------------- + +* Index manipulation + + - git-add is to add contents to the index (aka "staging area" + for the next commit), whether the file the contents happen to + be is an existing one or a newly created one. + + - git-add without any argument does not add everything + anymore. Use 'git-add .' instead. Also you can add + otherwise ignored files with an -f option. + + - git-add tries to be more friendly to users by offering an + interactive mode. + + - git-commit used to refuse to commit if was + different between HEAD and the index (i.e. update-index was + used on it earlier). This check was removed. + + - git-rm is much saner and safer. It is used to remove paths + from both the index file and the working tree, and makes sure + you are not losing any local modification before doing so. + + - git-reset ... can be used to revert index + entries for selected paths. + + - git-update-index is much less visible. + + +* Repository layout and objects transfer + + - The data for origin repository is stored in the configuration + file $GIT_DIR/config, not in $GIT_DIR/remotes/, for newly + created clones (the latter is still supported). + + - git-clone always uses what is known as "separate remote" + layout for a newly created repository with a working tree; + i.e. tracking branches in $GIT_DIR/refs/remotes/origin/ are + used to track branches from the origin. New branches that + appear on the origin side after a clone is made are also + tracked automatically. + + - git-branch and git-show-branch know remote tracking branches. + + - git-push can now be used to delete a remote branch or a tag. + This requires the updated git on the remote side. + + - git-push more agressively keeps the transferred objects + packed. Earlier we recommended to monitor amount of loose + objects and repack regularly, but you should repack when you + accumulated too many small packs this way as well. Updated + git-count-objects helps you with this. + + +* Reflog + + - Reflog records the history of where the tip of each branch + was at each moment. This facility is enabled by default for + repositories with working trees, and can be accessed with the + "branch@{time}" and "branch@{Nth}" notation. + + - "git show-branch" learned showing the reflog data with the + new --reflog option. + + - The commits referred to by reflog entries are now protected + against pruning. The new command "git reflog expire" can be + used to truncate older reflog entries and entries that refer + to commits that have been pruned away previously with older + versions of git. + + Existing repositories that have been using reflog may get + complaints from fsck-objects; please run "git reflog expire + --all" first to remove reflog entries that refer to commits + that are no longer in the repository before attempting to + repack it. + + - git-branch knows how to rename branches and moves existing + reflog data from the old branch to the new one. + + +* Packed refs + + - Repositories with hundreds of tags have been paying large + overhead, both in storage and in runtime. A new command, + git-pack-refs, can be used to "pack" them in more efficient + representation. + + - Clones and fetches over dumb transports are now aware of + packed refs and can download from repositories that use + them. + + +* Configuration + + - configuration related to colorize setting are consolidated + under color.* namespace (older diff.color.*, status.color.* + are still supported). + + +* Less external dependency + + - We no longer require the "merge" program from the RCS suite. + All 3-way file-level merges are now done internally. + + - The original implementation of git-merge-recursive which was + in Python has been removed; we have C implementation of it + now. + + - git-shortlog is no longer a Perl script. It no longer + requires output piped from git-log; it can accept revision + parameters directly on the command line. + + +* I18n + + - We have always encouraged the commit message to be encoded in + UTF-8, but the users are allowed to use legacy encoding as + appropriate for their projects. This will continue to be the + case. However, a non UTF-8 commit encoding _must_ be + explicitly set with i18n.commitencoding in the repository + where a commit is made; otherwise git-commit-tree will + complain if the log message does not look like a valid UTF-8 + string. + + - The value of i18n.commitencoding in the originating + repository is recorded in the commit object on the "encoding" + header, if it is not UTF-8. git-log and friends notice this, + and reencodes the message to the log output encoding when + displaying, if they are different. The log output encoding + is determined by "git log --encoding=", + i18n.logoutputencoding configuration, or i18n.commitencoding + configuration, in the decreasing order of preference, and + defaults to UTF-8. + + +* User support + + - Quite a lot of documentation updates. + + - Bash completion scripts have been updated heavily. + + - Better error messages for often used Porcelainish commands. + + +---------------------------------------------------------------- +Alex Riesen (1): + Make perl/ build procedure ActiveState friendly. + +Alexandre Julliard (1): + vc-git: Ignore errors caused by a non-existent directory in vc-git-registered. + +Andreas Ericsson (2): + ls-files: Give hints when errors happen. + git-diff: Introduce --index and deprecate --cached. + +Andy Parkins (8): + Improve git-prune -n output + Add support to git-branch to show local and remote branches + Use .git/config for storing "origin" shortcut repository + De-emphasise the symbolic link documentation. + Explicitly add the default "git pull" behaviour to .git/config on clone + Colourise git-branch output + Allow subcommand.color and color.subcommand color configuration + git-status always says what branch it's on + +Aneesh Kumar K.V (1): + Add config example with respect to branch + +Brian Gernhardt (6): + Add --add option to git-repo-config + Make git-diff documentation use [--] when it should. + Add documentation for show-branch --topics + Remove COLLISION_CHECK from Makefile since it's not used. + Keep "git --git-dir" from causing a bus error. + Make git-show-branch options similar to git-branch. + +David Miller (1): + Pass -M to diff in request-pull + +Eric Wong (29): + git-svn: handle authentication without relying on cached tokens on disk + git-svn: correctly access repos when only given partial read permissions + git-svn: exit with status 1 for test failures + git-svn: allow SVN:: lib users to track the root of the repository (again) + git-svn: use ~/.subversion config files when using SVN:: libraries + git-svn: enable delta transfers during fetches when using SVN:: libs + git-svn: update tests for recent changes + git-svn: error out when the SVN connection fails during a fetch + git-svn: fix output reporting from the delta fetcher + git-svn: color support for the log command + git-svn: documentation updates + git-svn: fix multi-init + git-svn: avoid network timeouts for long-running fetches + git-svn: extra error check to ensure we open a file correctly + git-svn: use do_switch for --follow-parent if the SVN library supports it + rerere: add clear, diff, and status commands + rerere: record (or avoid misrecording) resolved, skipped or aborted rebase/am + git-svn: enable logging of information not supported by git + git-svn: allow dcommit to take an alternate head + git-svn: correctly display fatal() error messages + git-svn: correctly handle packed-refs in refs/remotes/ + git-svn: correctly handle "(no author)" when using an authors file + git-svn: convert to using Git.pm + git-svn: remove support for the svn command-line client + git-svn: rename 'commit' command to 'set-tree' + git-cvsserver: fix breakage when calling git merge-file + Remove NO_ACCURATE_DIFF options from build systems + git-svn: enable common fetch/commit options for dcommit + Makefile: add quick-install-doc for installing pre-built manpages + +Han-Wen Nienhuys (2): + git-tag: allow empty tag message if -m is given explicitly. + ident.c: Trim hint printed when gecos is empty. + +Iñaki Arenaza (1): + git-cvsimport: add support for CVS pserver method HTTP/1.x proxying + +J. Bruce Fields (5): + Documentation: clarify tutorial pull/merge discussion + cvs-migration: improved section titles, better push/commit explanation + Documentation: reorganize cvs-migration.txt + Documentation: update git-clone man page with new behavior + Documentation: simpler shared repository creation + +Jakub Narebski (26): + gitweb: Protect against possible warning in git_commitdiff + gitweb: Buffer diff header to deal with split patches + git_patchset_body refactoring + gitweb: Default to $hash_base or HEAD for $hash in "commit" and "commitdiff" + gitweb: New improved formatting of chunk header in diff + gitweb: Add an option to href() to return full URL + gitweb: Refactor feed generation, make output prettier, add Atom feed + gitweb: Finish restoring "blob" links in git_difftree_body + gitweb: Replace SPC with   also in tag comment + gitweb: Do not use esc_html in esc_path + gitweb: Use git-show-ref instead of git-peek-remote + gitweb: Add author and committer email extraction to parse_commit + gitweb: Add author and contributor email to Atom feed + gitweb: Use author_epoch for pubdate in gitweb feeds + gitweb: Make project description in projects list link to summary view + gitweb: Fix Atom feed : it is $logo, not $logo_url + git-clone: Rename --use-immingled-remote option to --no-separate-remote + Document git-diff whitespace flags -b and -w + gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view + gitweb: Don't use Content-Encoding: header in git_snapshot + gitweb: Show target of symbolic link in "tree" view + gitweb: Add generic git_object subroutine to display object of any type + gitweb: Hyperlink target of symbolic link in "tree" view (if possible) + gitweb: SHA-1 in commit log message links to "object" view + gitweb: Do not show difftree for merges in "commit" view + gitweb: Add title attribute to ref marker with full ref name + gitweb: Add "next" link to commit view + +Jeff King (2): + shortlog: fix segfault on empty authorname + vim syntax: follow recent changes to commit template + +Jim Meyering (1): + Set permissions of each new file before "cvs add"ing it. + +Johannes Schindelin (30): + Build in shortlog + shortlog: do not crash on parsing "[PATCH" + shortlog: read mailmap from ./.mailmap again + shortlog: handle email addresses case-insensitively + shortlog: fix "-n" + shortlog: use pager + sha1_object_info(): be consistent with read_sha1_file() + xdiff: add xdl_merge() + xdl_merge(): fix an off-by-one bug + xdl_merge(): fix thinko + diff -b: ignore whitespace at end of line + xdl_merge(): fix and simplify conflict handling + cvs-migration document: make the need for "push" more obvious + Add builtin merge-file, a minimal replacement for RCS merge + merge-file: support -p and -q; fix compile warnings + Get rid of the dependency on RCS' merge program + merge-recursive: add/add really is modify/modify with an empty base + INSTALL: no need to have GNU diff installed + git-show: grok blobs, trees and tags, too + Document git-merge-file + add a function to rename sections in the config + git-branch: rename config vars branch..*, too + Introduce GIT_TEMPLATE_DIR + Use git-merge-file in git-merge-one-file, too + git-tag: support -F option + git-reset --hard: tell the user what the HEAD was reset to + move read_mmfile() into xdiff-interface + Add a test for git-rerere + Make git-rerere a builtin + commit-tree: encourage UTF-8 commit messages. + +Josef Weidendorfer (2): + Add branch.*.merge warning and documentation update + Move "no merge candidate" warning into git-pull + +Junio C Hamano (126): + upload-pack: stop the other side when they have more roots than we do. + apply --numstat: mark binary diffstat with - -, not 0 0 + pack-objects: tweak "do not even attempt delta" heuristics + Store peeled refs in packed-refs file. + remove merge-recursive-old + git-merge: make it usable as the first class UI + merge: allow merging into a yet-to-be-born branch. + Store peeled refs in packed-refs (take 2). + git-fetch: reuse ls-remote result. + git-fetch: fix dumb protocol transport to fetch from pack-pruned ref + git-fetch: allow glob pattern in refspec + refs outside refs/{heads,tags} match less strongly. + Typefix builtin-prune.c::prune_object() + Allow git push to delete remote ref. + gitweb: (style) use chomp without parentheses consistently. + git-clone: stop dumb protocol from copying refs outside heads/ and tags/. + git-branch -D: make it work even when on a yet-to-be-born branch + git-shortlog: fix common repository prefix abbreviation. + git-shortlog: make common repository prefix configurable with .mailmap + git-commit: show --summary after successful commit. + git-fetch: exit with non-zero status when fast-forward check fails + git-fetch: allow forcing glob pattern in refspec + fetch-pack: do not barf when duplicate re patterns are given + grep: do not skip unmerged entries when grepping in the working tree. + git-merge: tighten error checking. + git-merge: do not leak rev-parse output used for checking internally. + cvsimport: style fixup. + git-merge: fix confusion between tag and branch + xmerge: make return value from xdl_merge() more usable. + merge-recursive: use xdl_merge(). + read-tree: further loosen "working file will be lost" check. + Loosen "working file will be lost" check in Porcelain-ish + read-tree: document --exclude-per-directory + git-merge: squelch needless error message. + git-merge: fix "fix confusion between tag and branch" for real + Fix perl/ build. + git-rerere: add 'gc' command. + Documentation/git-commit: rewrite to make it more end-user friendly. + git-commit: allow --only to lose what was staged earlier. + shortlog: remove "[PATCH]" prefix from shortlog output + shortlog: fix segfault on empty authorname + diff --numstat: show binary with '-' to match "apply --numstat" + add test case for recursive merge + git-push: document removal of remote ref with : pathspec + Revert "git-diff: Introduce --index and deprecate --cached." + git merge: reword failure message. + spurious .sp in manpages + git-push: accept tag as advertised. + send-pack: tighten checks for remote names + branch --color: change default color selection. + git-blame: show lines attributed to boundary commits differently. + config documentation: group color items together. + git-svn: allow both diff.color and color.diff + Update git-diff documentation + git-fetch: make it work from within a subdirectory. + git-reset: make it work from within a subdirectory. + git-reset [--mixed] [--] ... + merge: give a bit prettier merge message to "merge branch~$n" + git-clone: use wildcard specification for tracking branches + git-pull: refuse default merge without branch.*.merge + git-clone: lose the artificial "first" fetch refspec + git-clone: lose the traditional 'no-separate-remote' layout + update-index: make D/F conflict error a bit more verbose. + git-add: remove conflicting entry when adding. + Fix check_file_directory_conflict(). + Fix mis-mark-up in git-merge-file.txt documentation + markup fix in svnimport documentation. + rev-list --left-right + Teach all of log family --left-right output. + Make left-right automatic. + Teach show-branch how to show ref-log data. + git-fetch: Avoid reading packed refs over and over again + avoid accessing _all_ loose refs in git-show-ref --verify + show-ref: fix --quiet --verify + show-ref: fix --verify --hash=length + parse-remote::expand_refs_wildcard() + show-ref: fix --exclude-existing + racy-git: documentation updates. + rerere: fix breakage of resolving. + fix testsuite: make sure they use templates freshly built from the source + Teach git-branch to delete tracking branches with -r -d + blame: -b (blame.blankboundary) and --root (blame.showroot) + git-add --interactive + git-add --interactive: hunk splitting + Revert "fix testsuite: make sure they use templates freshly built from the source" + Do not create $GIT_DIR/remotes/ directory anymore. + Use preprocessor constants for environment variable names. + Revert "Make left-right automatic." + fix populate-filespec + config_rename_section: fix FILE* leak + simplify inclusion of system header files. + revision: --skip= + git-add: error out when given no arguments. + compat/inet_ntop: do not use u_int + diff documentation: mostly talk about + add for_each_reflog_ent() iterator + Protect commits recorded in reflog from pruning. + Teach git-repack to preserve objects referred to by reflog entries. + reflog: fix warning message. + Move in_merge_bases() to commit.c + git reflog expire + Revert "git-pull: refuse default merge without branch.*.merge" + parse-remote: mark all refs not for merge only when fetching more than one + _XOPEN_SOURCE problem also exists on FreeBSD + commit-tree: do not overflow MAXPARENT + reflog expire: prune commits that are not incomplete + merge and reset: adjust for "reset --hard" messages + default pull: forget about "newbie protection" for now. + Do not support "partial URL shorthand" anymore. + Really fix headers for __FreeBSD__ + git-tag: lose exit after die + reflog expire: do not punt on tags that point at non commits. + Allow branch.*.merge to talk about remote tracking branches. + git-add --interactive: add documentation + match_pathspec() -- return how well the spec matched + git-rm: update to saner semantics + t3600: update the test for updated git rm + git-rm: Documentation + read_directory: show_both option. + git-add: add ignored files when asked explicitly. + git-add: warn when adding an ignored file with an explicit request. + git-add -f: allow adding otherwise ignored files. + GIT v1.5.0 preview + Move encoding conversion routine out of mailinfo to utf8.c + i18n.logToUTF8: convert commit log message to UTF-8 + Teach log family --encoding + +Lars Hjemli (4): + Add -v and --abbrev options to git-branch + git-branch: add options and tests for branch renaming + rename_ref: use lstat(2) when testing for symlink + git-branch: let caller specify logmsg + +Luben Tuikov (1): + Export PERL_PATH + +Michael Loeffler (1): + git-fetch: ignore dereferenced tags in expand_refs_wildcard + +Nicolas Pitre (12): + builtin git-shortlog is broken + pack-objects: remove redundent status information + make 'git add' a first class user friendly interface to the index + change the unpack limit treshold to a saner value + repacked packs should be read-only + make commit message a little more consistent and conforting + make patch_delta() error cases a bit more verbose + make git a bit less cryptic on fetch errors + index-pack usage of mmap() is unacceptably slower on many OSes other than Linux + clarify some error messages wrt unknown object types + checkout: make the message about the need for a new branch a bit clearer + add .mailmap for git-shortlog output with the git repository + +Paul Mackerras (1): + gitk: Fix enabling/disabling of menu items on Mac OS X + +Peter Baumann (1): + config option log.showroot to show the diff of root commits + +Petr Baudis (1): + Make git-clone --use-separate-remote the default + +Quy Tonthat (4): + git-clone documentation + Documentation: new option -P for git-svnimport + git-branch -d: do not stop at the first failure. + Documentation/git-branch: new -r to delete remote-tracking branches. + +René Scharfe (1): + shortlog: remove range check + +Robert Fitzsimons (17): + gitweb: Show '...' links in "summary" view only if there are more items + gitweb: Add missing show '...' links change. + gitweb: optimize git_get_last_activity. + gitweb: optimize git_shortlog_body. + gitweb: optimize git_summary. + gitweb: Use rev-list pattern search options. + gitweb: Require a minimum of two character for the search text. + gitweb: Allow search to be disabled from the config file. + gitweb: Paginate commit/author/committer search output + gitweb: Add parse_commits, used to bulk load commit objects. + gitweb: We do longer need the --parents flag in rev-list. + gitweb: Change summary, shortlog actions to use parse_commits. + gitweb: Change log action to use parse_commits. + gitweb: Change header search action to use parse_commits. + gitweb: Change atom, rss actions to use parse_commits. + gitweb: Change history action to use parse_commits. + gitweb: Use rev-list --skip option. + +Robin Rosenberg (1): + Make cvsexportcommit work with filenames with spaces and non-ascii characters. + +Sean Estabrooks (1): + Update documentation to remove incorrect GIT_DIFF_OPTS example. + +Shawn O. Pearce (31): + Teach git-completion.bash how to complete git-merge. + Hide plumbing/transport commands from bash completion. + Teach bash how to complete options for git-name-rev. + Add current branch in PS1 support to git-completion.bash. + Teach bash how to complete git-format-patch. + Teach bash how to complete git-cherry-pick. + Teach bash how to complete git-rebase. + Teach bash about git log/show/whatchanged options. + Support bash completion of refs/remote. + Teach bash about git-repo-config. + Support --strategy=x completion in addition to --strategy x. + Cache the list of merge strategies and available commands during load. + Teach bash about git-am/git-apply and their whitespace options. + Teach bash how to complete long options for git-commit. + Fix broken bash completion of local refs. + Remove uncontested renamed files during merge. + Avoid accessing a slow working copy during diffcore operations. + Provide more meaningful output from 'git init-db'. + Enable reflogs by default in any repository with a working directory. + Teach bash the new features of 'git show'. + Suggest use of "git add file1 file2" when there is nothing to commit. + Align section headers of 'git status' to new 'git add'. + Default GIT_COMMITTER_NAME to login name in recieve-pack. + Suggest 'add' in am/revert/cherry-pick. + Rename imap-send's internal info/warn functions. + Introduce a global level warn() function. + Don't crash during repack of a reflog with pruned commits. + Use extended SHA1 syntax in merge-recursive conflicts. + Display 'theirs' branch name when possible in merge. + Rename gitfakemmap to git_mmap. + Switch git_mmap to use pread. + +Terje Sten Bjerkseth (1): + Fix system header problems on Mac OS X + +Uwe Zeisberger (1): + Fix documentation copy&paste typo + From 7755f573bdb466be3d31edc2219f8a94595a6783 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 27 Dec 2006 21:37:13 -0800 Subject: [PATCH 0170/2612] 1.5.0 relnotes (git-svn section) Signed-off-by: Junio C Hamano --- v1.5.0.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/v1.5.0.txt b/v1.5.0.txt index 6fc1ff7b00cec4..e4c75a7164ca3b 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -182,6 +182,16 @@ Updates in v1.5.0 since v1.4.4 series defaults to UTF-8. +* Foreign SCM interfaces + + - git-svn now requires the Perl SVN:: libraries, the + command-line backend was too slow and limited. + + - the 'commit' command has been renamed to 'set-tree', and + 'dcommit' is the recommended replacement for day-to-day + work. + + * User support - Quite a lot of documentation updates. From d086af93c471297d638c0967f8e1d5cdd2186c04 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 27 Dec 2006 21:50:45 -0800 Subject: [PATCH 0171/2612] 1.5.0 release notes - reword introductory text. Signed-off-by: Junio C Hamano --- v1.5.0.txt | 444 +++++------------------------------------------------ 1 file changed, 35 insertions(+), 409 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index e4c75a7164ca3b..0a66201da9a102 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -1,37 +1,46 @@ -Major changes that are not news -------------------------------- +GIT v1.5.0 Release Notes +======================== -There were a handful big changes that happened before this major -release. +Old news +-------- This section is for people who are upgrading from ancient -versions. Some of them are one-way street upgrades -- once you -use the feature your repository cannot be used with ancient git. +versions of git. Although all of the changes in this section +happened before the current v1.4.4 release, they are summarized +here in the v1.5.0 release notes for people who skip versions +between upgrading. + +In general, you should not have to worry about incompatibility. +There is no need to perform "repository conversion". However, +some of the changes are one-way street upgrades -- once you use +the feature your repository cannot be used with ancient git. - There is a new configuration variable core.legacyheaders that - changes the format of loose objects to more efficient to pack - and send out of the repository over git native protocol. - However, this format cannot be read by git older than v1.4.2; - people fetching from your repository using older clients over - dumb transports (e.g. http) will also be affected. This is - not enabled by default. + changes the format of loose objects so that they are more + efficient to pack and to send out of the repository over git + native protocol. However, this format cannot be read by git + older than v1.4.2; people fetching from your repository using + older clients over dumb transports (e.g. http) using older + versions of git will also be affected. This is not enabled + by default. - Another configuration repack.usedeltabaseoffset further allows packfile to be created in more space efficient format, - which cannot be read by git older than v1.4.3. This is not + which cannot be read by git older than v1.4.3. This is not enabled by default. - 'git pack-refs' appeared in v1.4.4; this command allows tags to be accessed much more efficiently than the traditional - 'one-file-per-tag' format. Older git-native client can fetch - from a repository that packed its tags, but older dumb - transports cannot. This is done by an explicit user action, - either by use of "git pack-refs --prune" command or by use of - "git gc" command. + 'one-file-per-tag' format. Older git-native clients can + fetch from a repository that packed its tags (the server side + needs to run the up-to-date version of git), but older dumb + transports cannot. Packing of refs is done by an explicit + user action, either by use of "git pack-refs --prune" command + or by use of "git gc" command. - 'git -p' to paginate anything -- many commands do pagination by default on a tty. Introduced between v1.4.1 and v1.4.2; - this may surprise old timer users. + this may surprise old timers. - 'git archive' superseded 'git tar' in v1.4.3; @@ -43,7 +52,10 @@ use the feature your repository cannot be used with ancient git. - 'gitweb' became part of git.git during v1.4.0 timeperiod and seriously modified since then. - - reflog is an v1.4.0 invention. + - reflog is an v1.4.0 invention. This alows you to name a + revision that a branch used to be at (e.g. "git diff + master@{yesterday} master" allows you to see changes since + yesterday's tip of the branch). Updates in v1.5.0 since v1.4.4 series @@ -80,7 +92,9 @@ Updates in v1.5.0 since v1.4.4 series - The data for origin repository is stored in the configuration file $GIT_DIR/config, not in $GIT_DIR/remotes/, for newly - created clones (the latter is still supported). + created clones. The latter is still supported and there is + no need to convert your existing repository if you are + already comfortable with your workflow with the layout. - git-clone always uses what is known as "separate remote" layout for a newly created repository with a working tree; @@ -200,391 +214,3 @@ Updates in v1.5.0 since v1.4.4 series - Better error messages for often used Porcelainish commands. - ----------------------------------------------------------------- -Alex Riesen (1): - Make perl/ build procedure ActiveState friendly. - -Alexandre Julliard (1): - vc-git: Ignore errors caused by a non-existent directory in vc-git-registered. - -Andreas Ericsson (2): - ls-files: Give hints when errors happen. - git-diff: Introduce --index and deprecate --cached. - -Andy Parkins (8): - Improve git-prune -n output - Add support to git-branch to show local and remote branches - Use .git/config for storing "origin" shortcut repository - De-emphasise the symbolic link documentation. - Explicitly add the default "git pull" behaviour to .git/config on clone - Colourise git-branch output - Allow subcommand.color and color.subcommand color configuration - git-status always says what branch it's on - -Aneesh Kumar K.V (1): - Add config example with respect to branch - -Brian Gernhardt (6): - Add --add option to git-repo-config - Make git-diff documentation use [--] when it should. - Add documentation for show-branch --topics - Remove COLLISION_CHECK from Makefile since it's not used. - Keep "git --git-dir" from causing a bus error. - Make git-show-branch options similar to git-branch. - -David Miller (1): - Pass -M to diff in request-pull - -Eric Wong (29): - git-svn: handle authentication without relying on cached tokens on disk - git-svn: correctly access repos when only given partial read permissions - git-svn: exit with status 1 for test failures - git-svn: allow SVN:: lib users to track the root of the repository (again) - git-svn: use ~/.subversion config files when using SVN:: libraries - git-svn: enable delta transfers during fetches when using SVN:: libs - git-svn: update tests for recent changes - git-svn: error out when the SVN connection fails during a fetch - git-svn: fix output reporting from the delta fetcher - git-svn: color support for the log command - git-svn: documentation updates - git-svn: fix multi-init - git-svn: avoid network timeouts for long-running fetches - git-svn: extra error check to ensure we open a file correctly - git-svn: use do_switch for --follow-parent if the SVN library supports it - rerere: add clear, diff, and status commands - rerere: record (or avoid misrecording) resolved, skipped or aborted rebase/am - git-svn: enable logging of information not supported by git - git-svn: allow dcommit to take an alternate head - git-svn: correctly display fatal() error messages - git-svn: correctly handle packed-refs in refs/remotes/ - git-svn: correctly handle "(no author)" when using an authors file - git-svn: convert to using Git.pm - git-svn: remove support for the svn command-line client - git-svn: rename 'commit' command to 'set-tree' - git-cvsserver: fix breakage when calling git merge-file - Remove NO_ACCURATE_DIFF options from build systems - git-svn: enable common fetch/commit options for dcommit - Makefile: add quick-install-doc for installing pre-built manpages - -Han-Wen Nienhuys (2): - git-tag: allow empty tag message if -m is given explicitly. - ident.c: Trim hint printed when gecos is empty. - -Iñaki Arenaza (1): - git-cvsimport: add support for CVS pserver method HTTP/1.x proxying - -J. Bruce Fields (5): - Documentation: clarify tutorial pull/merge discussion - cvs-migration: improved section titles, better push/commit explanation - Documentation: reorganize cvs-migration.txt - Documentation: update git-clone man page with new behavior - Documentation: simpler shared repository creation - -Jakub Narebski (26): - gitweb: Protect against possible warning in git_commitdiff - gitweb: Buffer diff header to deal with split patches + git_patchset_body refactoring - gitweb: Default to $hash_base or HEAD for $hash in "commit" and "commitdiff" - gitweb: New improved formatting of chunk header in diff - gitweb: Add an option to href() to return full URL - gitweb: Refactor feed generation, make output prettier, add Atom feed - gitweb: Finish restoring "blob" links in git_difftree_body - gitweb: Replace SPC with   also in tag comment - gitweb: Do not use esc_html in esc_path - gitweb: Use git-show-ref instead of git-peek-remote - gitweb: Add author and committer email extraction to parse_commit - gitweb: Add author and contributor email to Atom feed - gitweb: Use author_epoch for pubdate in gitweb feeds - gitweb: Make project description in projects list link to summary view - gitweb: Fix Atom feed : it is $logo, not $logo_url - git-clone: Rename --use-immingled-remote option to --no-separate-remote - Document git-diff whitespace flags -b and -w - gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view - gitweb: Don't use Content-Encoding: header in git_snapshot - gitweb: Show target of symbolic link in "tree" view - gitweb: Add generic git_object subroutine to display object of any type - gitweb: Hyperlink target of symbolic link in "tree" view (if possible) - gitweb: SHA-1 in commit log message links to "object" view - gitweb: Do not show difftree for merges in "commit" view - gitweb: Add title attribute to ref marker with full ref name - gitweb: Add "next" link to commit view - -Jeff King (2): - shortlog: fix segfault on empty authorname - vim syntax: follow recent changes to commit template - -Jim Meyering (1): - Set permissions of each new file before "cvs add"ing it. - -Johannes Schindelin (30): - Build in shortlog - shortlog: do not crash on parsing "[PATCH" - shortlog: read mailmap from ./.mailmap again - shortlog: handle email addresses case-insensitively - shortlog: fix "-n" - shortlog: use pager - sha1_object_info(): be consistent with read_sha1_file() - xdiff: add xdl_merge() - xdl_merge(): fix an off-by-one bug - xdl_merge(): fix thinko - diff -b: ignore whitespace at end of line - xdl_merge(): fix and simplify conflict handling - cvs-migration document: make the need for "push" more obvious - Add builtin merge-file, a minimal replacement for RCS merge - merge-file: support -p and -q; fix compile warnings - Get rid of the dependency on RCS' merge program - merge-recursive: add/add really is modify/modify with an empty base - INSTALL: no need to have GNU diff installed - git-show: grok blobs, trees and tags, too - Document git-merge-file - add a function to rename sections in the config - git-branch: rename config vars branch..*, too - Introduce GIT_TEMPLATE_DIR - Use git-merge-file in git-merge-one-file, too - git-tag: support -F option - git-reset --hard: tell the user what the HEAD was reset to - move read_mmfile() into xdiff-interface - Add a test for git-rerere - Make git-rerere a builtin - commit-tree: encourage UTF-8 commit messages. - -Josef Weidendorfer (2): - Add branch.*.merge warning and documentation update - Move "no merge candidate" warning into git-pull - -Junio C Hamano (126): - upload-pack: stop the other side when they have more roots than we do. - apply --numstat: mark binary diffstat with - -, not 0 0 - pack-objects: tweak "do not even attempt delta" heuristics - Store peeled refs in packed-refs file. - remove merge-recursive-old - git-merge: make it usable as the first class UI - merge: allow merging into a yet-to-be-born branch. - Store peeled refs in packed-refs (take 2). - git-fetch: reuse ls-remote result. - git-fetch: fix dumb protocol transport to fetch from pack-pruned ref - git-fetch: allow glob pattern in refspec - refs outside refs/{heads,tags} match less strongly. - Typefix builtin-prune.c::prune_object() - Allow git push to delete remote ref. - gitweb: (style) use chomp without parentheses consistently. - git-clone: stop dumb protocol from copying refs outside heads/ and tags/. - git-branch -D: make it work even when on a yet-to-be-born branch - git-shortlog: fix common repository prefix abbreviation. - git-shortlog: make common repository prefix configurable with .mailmap - git-commit: show --summary after successful commit. - git-fetch: exit with non-zero status when fast-forward check fails - git-fetch: allow forcing glob pattern in refspec - fetch-pack: do not barf when duplicate re patterns are given - grep: do not skip unmerged entries when grepping in the working tree. - git-merge: tighten error checking. - git-merge: do not leak rev-parse output used for checking internally. - cvsimport: style fixup. - git-merge: fix confusion between tag and branch - xmerge: make return value from xdl_merge() more usable. - merge-recursive: use xdl_merge(). - read-tree: further loosen "working file will be lost" check. - Loosen "working file will be lost" check in Porcelain-ish - read-tree: document --exclude-per-directory - git-merge: squelch needless error message. - git-merge: fix "fix confusion between tag and branch" for real - Fix perl/ build. - git-rerere: add 'gc' command. - Documentation/git-commit: rewrite to make it more end-user friendly. - git-commit: allow --only to lose what was staged earlier. - shortlog: remove "[PATCH]" prefix from shortlog output - shortlog: fix segfault on empty authorname - diff --numstat: show binary with '-' to match "apply --numstat" - add test case for recursive merge - git-push: document removal of remote ref with : pathspec - Revert "git-diff: Introduce --index and deprecate --cached." - git merge: reword failure message. - spurious .sp in manpages - git-push: accept tag as advertised. - send-pack: tighten checks for remote names - branch --color: change default color selection. - git-blame: show lines attributed to boundary commits differently. - config documentation: group color items together. - git-svn: allow both diff.color and color.diff - Update git-diff documentation - git-fetch: make it work from within a subdirectory. - git-reset: make it work from within a subdirectory. - git-reset [--mixed] [--] ... - merge: give a bit prettier merge message to "merge branch~$n" - git-clone: use wildcard specification for tracking branches - git-pull: refuse default merge without branch.*.merge - git-clone: lose the artificial "first" fetch refspec - git-clone: lose the traditional 'no-separate-remote' layout - update-index: make D/F conflict error a bit more verbose. - git-add: remove conflicting entry when adding. - Fix check_file_directory_conflict(). - Fix mis-mark-up in git-merge-file.txt documentation - markup fix in svnimport documentation. - rev-list --left-right - Teach all of log family --left-right output. - Make left-right automatic. - Teach show-branch how to show ref-log data. - git-fetch: Avoid reading packed refs over and over again - avoid accessing _all_ loose refs in git-show-ref --verify - show-ref: fix --quiet --verify - show-ref: fix --verify --hash=length - parse-remote::expand_refs_wildcard() - show-ref: fix --exclude-existing - racy-git: documentation updates. - rerere: fix breakage of resolving. - fix testsuite: make sure they use templates freshly built from the source - Teach git-branch to delete tracking branches with -r -d - blame: -b (blame.blankboundary) and --root (blame.showroot) - git-add --interactive - git-add --interactive: hunk splitting - Revert "fix testsuite: make sure they use templates freshly built from the source" - Do not create $GIT_DIR/remotes/ directory anymore. - Use preprocessor constants for environment variable names. - Revert "Make left-right automatic." - fix populate-filespec - config_rename_section: fix FILE* leak - simplify inclusion of system header files. - revision: --skip= - git-add: error out when given no arguments. - compat/inet_ntop: do not use u_int - diff documentation: mostly talk about - add for_each_reflog_ent() iterator - Protect commits recorded in reflog from pruning. - Teach git-repack to preserve objects referred to by reflog entries. - reflog: fix warning message. - Move in_merge_bases() to commit.c - git reflog expire - Revert "git-pull: refuse default merge without branch.*.merge" - parse-remote: mark all refs not for merge only when fetching more than one - _XOPEN_SOURCE problem also exists on FreeBSD - commit-tree: do not overflow MAXPARENT - reflog expire: prune commits that are not incomplete - merge and reset: adjust for "reset --hard" messages - default pull: forget about "newbie protection" for now. - Do not support "partial URL shorthand" anymore. - Really fix headers for __FreeBSD__ - git-tag: lose exit after die - reflog expire: do not punt on tags that point at non commits. - Allow branch.*.merge to talk about remote tracking branches. - git-add --interactive: add documentation - match_pathspec() -- return how well the spec matched - git-rm: update to saner semantics - t3600: update the test for updated git rm - git-rm: Documentation - read_directory: show_both option. - git-add: add ignored files when asked explicitly. - git-add: warn when adding an ignored file with an explicit request. - git-add -f: allow adding otherwise ignored files. - GIT v1.5.0 preview - Move encoding conversion routine out of mailinfo to utf8.c - i18n.logToUTF8: convert commit log message to UTF-8 - Teach log family --encoding - -Lars Hjemli (4): - Add -v and --abbrev options to git-branch - git-branch: add options and tests for branch renaming - rename_ref: use lstat(2) when testing for symlink - git-branch: let caller specify logmsg - -Luben Tuikov (1): - Export PERL_PATH - -Michael Loeffler (1): - git-fetch: ignore dereferenced tags in expand_refs_wildcard - -Nicolas Pitre (12): - builtin git-shortlog is broken - pack-objects: remove redundent status information - make 'git add' a first class user friendly interface to the index - change the unpack limit treshold to a saner value - repacked packs should be read-only - make commit message a little more consistent and conforting - make patch_delta() error cases a bit more verbose - make git a bit less cryptic on fetch errors - index-pack usage of mmap() is unacceptably slower on many OSes other than Linux - clarify some error messages wrt unknown object types - checkout: make the message about the need for a new branch a bit clearer - add .mailmap for git-shortlog output with the git repository - -Paul Mackerras (1): - gitk: Fix enabling/disabling of menu items on Mac OS X - -Peter Baumann (1): - config option log.showroot to show the diff of root commits - -Petr Baudis (1): - Make git-clone --use-separate-remote the default - -Quy Tonthat (4): - git-clone documentation - Documentation: new option -P for git-svnimport - git-branch -d: do not stop at the first failure. - Documentation/git-branch: new -r to delete remote-tracking branches. - -René Scharfe (1): - shortlog: remove range check - -Robert Fitzsimons (17): - gitweb: Show '...' links in "summary" view only if there are more items - gitweb: Add missing show '...' links change. - gitweb: optimize git_get_last_activity. - gitweb: optimize git_shortlog_body. - gitweb: optimize git_summary. - gitweb: Use rev-list pattern search options. - gitweb: Require a minimum of two character for the search text. - gitweb: Allow search to be disabled from the config file. - gitweb: Paginate commit/author/committer search output - gitweb: Add parse_commits, used to bulk load commit objects. - gitweb: We do longer need the --parents flag in rev-list. - gitweb: Change summary, shortlog actions to use parse_commits. - gitweb: Change log action to use parse_commits. - gitweb: Change header search action to use parse_commits. - gitweb: Change atom, rss actions to use parse_commits. - gitweb: Change history action to use parse_commits. - gitweb: Use rev-list --skip option. - -Robin Rosenberg (1): - Make cvsexportcommit work with filenames with spaces and non-ascii characters. - -Sean Estabrooks (1): - Update documentation to remove incorrect GIT_DIFF_OPTS example. - -Shawn O. Pearce (31): - Teach git-completion.bash how to complete git-merge. - Hide plumbing/transport commands from bash completion. - Teach bash how to complete options for git-name-rev. - Add current branch in PS1 support to git-completion.bash. - Teach bash how to complete git-format-patch. - Teach bash how to complete git-cherry-pick. - Teach bash how to complete git-rebase. - Teach bash about git log/show/whatchanged options. - Support bash completion of refs/remote. - Teach bash about git-repo-config. - Support --strategy=x completion in addition to --strategy x. - Cache the list of merge strategies and available commands during load. - Teach bash about git-am/git-apply and their whitespace options. - Teach bash how to complete long options for git-commit. - Fix broken bash completion of local refs. - Remove uncontested renamed files during merge. - Avoid accessing a slow working copy during diffcore operations. - Provide more meaningful output from 'git init-db'. - Enable reflogs by default in any repository with a working directory. - Teach bash the new features of 'git show'. - Suggest use of "git add file1 file2" when there is nothing to commit. - Align section headers of 'git status' to new 'git add'. - Default GIT_COMMITTER_NAME to login name in recieve-pack. - Suggest 'add' in am/revert/cherry-pick. - Rename imap-send's internal info/warn functions. - Introduce a global level warn() function. - Don't crash during repack of a reflog with pruned commits. - Use extended SHA1 syntax in merge-recursive conflicts. - Display 'theirs' branch name when possible in merge. - Rename gitfakemmap to git_mmap. - Switch git_mmap to use pread. - -Terje Sten Bjerkseth (1): - Fix system header problems on Mac OS X - -Uwe Zeisberger (1): - Fix documentation copy&paste typo - From d1c76fbe2671261cd2a200879b5aeff64cb61aa2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 30 Dec 2006 17:30:29 -0800 Subject: [PATCH 0172/2612] v1.5.0 notes -- further rewording of old news items. --- v1.5.0.txt | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 0a66201da9a102..69631ad2361c0e 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -7,36 +7,37 @@ Old news This section is for people who are upgrading from ancient versions of git. Although all of the changes in this section happened before the current v1.4.4 release, they are summarized -here in the v1.5.0 release notes for people who skip versions -between upgrading. +here in the v1.5.0 release notes for people who skipped earlier +versions. -In general, you should not have to worry about incompatibility. -There is no need to perform "repository conversion". However, -some of the changes are one-way street upgrades -- once you use -the feature your repository cannot be used with ancient git. +In general, you should not have to worry about incompatibility, +and there is no need to perform "repository conversion" if you +are updating to v1.5.0. However, some of the changes are +one-way street upgrades; once you use them your repository +can no longer be used with ancient git. - - There is a new configuration variable core.legacyheaders that + - There is a configuration variable core.legacyheaders that changes the format of loose objects so that they are more efficient to pack and to send out of the repository over git - native protocol. However, this format cannot be read by git - older than v1.4.2; people fetching from your repository using - older clients over dumb transports (e.g. http) using older - versions of git will also be affected. This is not enabled - by default. - - - Another configuration repack.usedeltabaseoffset further - allows packfile to be created in more space efficient format, - which cannot be read by git older than v1.4.3. This is not + native protocol, since v1.4.2. However, this format cannot + be read by git older than that version; people fetching from + your repository using older clients over dumb transports + (e.g. http) using older versions of git will also be + affected. This is not enabled by default. + + - Since v1.4.3, configuration repack.usedeltabaseoffset allows + packfile to be created in more space efficient format, which + cannot be read by git older than that version. This is not enabled by default. - 'git pack-refs' appeared in v1.4.4; this command allows tags to be accessed much more efficiently than the traditional 'one-file-per-tag' format. Older git-native clients can - fetch from a repository that packed its tags (the server side - needs to run the up-to-date version of git), but older dumb - transports cannot. Packing of refs is done by an explicit - user action, either by use of "git pack-refs --prune" command - or by use of "git gc" command. + still fetch from a repository that packed and pruned refs + (the server side needs to run the up-to-date version of git), + but older dumb transports cannot. Packing of refs is done by + an explicit user action, either by use of "git pack-refs + --prune" command or by use of "git gc" command. - 'git -p' to paginate anything -- many commands do pagination by default on a tty. Introduced between v1.4.1 and v1.4.2; From d59269a76f9e20c249e42beddeac947200498dff Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 1 Jan 2007 14:59:00 -0800 Subject: [PATCH 0173/2612] v1.5.0 release notes draft updates. --- v1.5.0.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/v1.5.0.txt b/v1.5.0.txt index 69631ad2361c0e..535c45eae56be4 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -215,3 +215,27 @@ Updates in v1.5.0 since v1.4.4 series - Better error messages for often used Porcelainish commands. + +* Shallow clones + + - There is a partial support for 'shallow' repositories that + keeps only recent history now. A 'shallow clone' is created + by specifying how deep that truncated history should be. + + Currently a shallow repository has number of limitations: + + - Cloning and fetching _from_ a shallow clone are not + supported (nor tested -- so they might work by accident but + they are not expected to). + + - Pushing from nor into a shallow clone are not expected to + work. + + - Merging inside a shallow repository would work as long as a + merge base is found in the recent history, but otherwise it + will be like merging unrelated histories and may result in + huge conflicts. + + but this would be more than adequate for people who want to + look at near the tip of a big project with a deep history and + send patches in e-mail format. From 19777591eb1428eddb7aaf6c7b5ed8a1a4ffb4e4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 9 Jan 2007 22:44:41 -0800 Subject: [PATCH 0174/2612] Doit: fix -pedantic --- Doit | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Doit b/Doit index b134b84d9722d6..aef3b4bee12995 100755 --- a/Doit +++ b/Doit @@ -1,7 +1,10 @@ #!/bin/sh -: ${M=''} : ${J=-j2} +while case "$1" in -pedantic) M=$1 ;; *) break ;; esac +do + shift +done test -z "$(git diff --cached --name-status)" || { echo >&2 "Repository unclean." From 2a26199aac43ab5a08ec3a28f1b3f42e980f2ee9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 9 Jan 2007 23:23:42 -0800 Subject: [PATCH 0175/2612] update v1.5.0 draft release notes - Reword a few paragraphs to follow comments from the list. - Add sections to Bare repositories, Detached HEAD, and Sliding mmap. --- v1.5.0.txt | 99 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 85 insertions(+), 14 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 535c45eae56be4..9bbe825df04fd8 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -19,16 +19,23 @@ can no longer be used with ancient git. - There is a configuration variable core.legacyheaders that changes the format of loose objects so that they are more efficient to pack and to send out of the repository over git - native protocol, since v1.4.2. However, this format cannot - be read by git older than that version; people fetching from - your repository using older clients over dumb transports - (e.g. http) using older versions of git will also be - affected. This is not enabled by default. + native protocol, since v1.4.2. However, loose objects + written in the new format cannot be read by git older than + that version; people fetching from your repository using + older clients over dumb transports (e.g. http) using older + versions of git will also be affected. - Since v1.4.3, configuration repack.usedeltabaseoffset allows packfile to be created in more space efficient format, which - cannot be read by git older than that version. This is not - enabled by default. + cannot be read by git older than that version. + +The above two are not enabled by default and you explicitly have +to ask for them, because these two features make repositories +unreadable by older versions of git, and in v1.5.0 we still do +not enable them by default for the same reason. We will change +this default probably 1 year after 1.4.2's release, when it is +reasonable to expect everybody to have new enough version of +git. - 'git pack-refs' appeared in v1.4.4; this command allows tags to be accessed much more efficiently than the traditional @@ -115,6 +122,26 @@ Updates in v1.5.0 since v1.4.4 series accumulated too many small packs this way as well. Updated git-count-objects helps you with this. + - A new command, git-remote, can help you manage your remote + tracking branch definitions. + + +* Bare repositories + + - Certain commands change their behaviour in a bare repository + (i.e. a repository without associated working tree). We use + a fairly conservative heuristic (if $GIT_DIR is ".git", or + ends with "/.git", the repository is not bare) to decide if a + repository is bare, but "core.bare" configuration variable + can be used to override the heuristic when it misidentifies + your repository. + + - git-fetch used to complain updating the current branch but + this is now allowed for a bare repository. + + - NEEDSWORK: We should disable Porcelain-ish commands that + require a working tree in a bare repository. + * Reflog @@ -133,15 +160,42 @@ Updates in v1.5.0 since v1.4.4 series versions of git. Existing repositories that have been using reflog may get - complaints from fsck-objects; please run "git reflog expire - --all" first to remove reflog entries that refer to commits - that are no longer in the repository before attempting to - repack it. + complaints from fsck-objects and may not be able to run + git-repack; please run "git reflog expire --all" first to + remove reflog entries that refer to commits that are no + longer in the repository when that happens. - git-branch knows how to rename branches and moves existing reflog data from the old branch to the new one. +* Detached HEAD + + - You can give non-branch to "git checkout" now. This will + dissociate your HEAD from any of your branches. A typical + use of this feature is to "look around". E.g. + + $ git checkout v2.6.16 + ... compile, test, etc. + $ git checkout v2.6.17 + ... compile, test, etc. + + - After detaching your HEAD, you can go back to an existing + branch with usual "git checkout $branch". Also you can + start a new branch using "git checkout -b $newbranch". + + - You can even pull from other repositories, make merges and + commits while your HEAD is detached. Also you can use "git + reset" to jump to arbitrary commit. + + Going back to undetached state by "git checkout $branch" can + lose the current stat you arrived in these ways, and "git + checkout" refuses when the detached HEAD is not pointed by + any existing ref (an existing branch, a remote tracking + branch or a tag). This safety can be overriden with "git + checout -f". + + * Packed refs - Repositories with hundreds of tags have been paying large @@ -196,15 +250,23 @@ Updates in v1.5.0 since v1.4.4 series configuration, in the decreasing order of preference, and defaults to UTF-8. + - Tools for e-mailed patch application now default to -u + behaviour; i.e. it always re-codes from the e-mailed encoding + to the encoding specified with i18n.commitencoding. This + unfortunately forces projects that have happily using a + legacy encoding without setting i18n.commitencoding, but + taken with other improvement, please excuse us for this very + minor one-time inconvenience. + * Foreign SCM interfaces - git-svn now requires the Perl SVN:: libraries, the command-line backend was too slow and limited. - - the 'commit' command has been renamed to 'set-tree', and - 'dcommit' is the recommended replacement for day-to-day - work. + - the 'commit' subcommand of git-svn has been renamed to + 'set-tree', and 'dcommit' is the recommended replacement for + day-to-day work. * User support @@ -216,6 +278,15 @@ Updates in v1.5.0 since v1.4.4 series - Better error messages for often used Porcelainish commands. +* Sliding mmap + + - We used to assume that we can mmap the whole packfile while + in use, but with a large project this consumes huge virtual + memory space and truly huge ones would not fit in the + userland address space on 32-bit platforms. We now mmap huge + packfile in pieces to avoid this problem. + + * Shallow clones - There is a partial support for 'shallow' repositories that From a9ffa429c0db1653bb5950b5f4f115199babafb6 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 15 Jan 2007 14:37:11 -0800 Subject: [PATCH 0176/2612] The removal of stale reflog entries need --stale-fix option. --- v1.5.0.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 9bbe825df04fd8..4d43fe30dd97b8 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -60,7 +60,7 @@ git. - 'gitweb' became part of git.git during v1.4.0 timeperiod and seriously modified since then. - - reflog is an v1.4.0 invention. This alows you to name a + - reflog is an v1.4.0 invention. This allows you to name a revision that a branch used to be at (e.g. "git diff master@{yesterday} master" allows you to see changes since yesterday's tip of the branch). @@ -161,9 +161,9 @@ Updates in v1.5.0 since v1.4.4 series Existing repositories that have been using reflog may get complaints from fsck-objects and may not be able to run - git-repack; please run "git reflog expire --all" first to - remove reflog entries that refer to commits that are no - longer in the repository when that happens. + git-repack; please run "git reflog expire --stale-fix --all" + first to remove reflog entries that refer to commits that are + no longer in the repository when that happens. - git-branch knows how to rename branches and moves existing reflog data from the old branch to the new one. From 674735836e1a9fe2f97b79955405f304352a65cd Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 15 Jan 2007 14:42:05 -0800 Subject: [PATCH 0177/2612] Repository cloned with 1.5.0 uses wildcard refspec This makes fetching into such a repository using older git impossible until the remote.*.fetch lines are downgraded. Warn mildly about this. --- v1.5.0.txt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 4d43fe30dd97b8..035a485b5aa39b 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -107,9 +107,16 @@ Updates in v1.5.0 since v1.4.4 series - git-clone always uses what is known as "separate remote" layout for a newly created repository with a working tree; i.e. tracking branches in $GIT_DIR/refs/remotes/origin/ are - used to track branches from the origin. New branches that - appear on the origin side after a clone is made are also - tracked automatically. + used to track branches from the origin. + + - New branches that appear on the origin side after a clone is + made are also tracked automatically. This is done with an + wildcard refspec "refs/heads/*:refs/remotes/origin/*", which + older git does not understand, so if you clone with 1.5.0, + you would need to downgrade remote.*.fetch in the + configuration file to specify each branch you are interested + in individually if you plan to fetch into the repository with + older versions of git (but why would you?). - git-branch and git-show-branch know remote tracking branches. From f0cab290081c3ee5da95d1978e79b7dd0a634d13 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 15 Jan 2007 14:42:30 -0800 Subject: [PATCH 0178/2612] working tree commands do not work in bare repositories. --- v1.5.0.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 035a485b5aa39b..16e35f19b9d083 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -146,8 +146,8 @@ Updates in v1.5.0 since v1.4.4 series - git-fetch used to complain updating the current branch but this is now allowed for a bare repository. - - NEEDSWORK: We should disable Porcelain-ish commands that - require a working tree in a bare repository. + - Porcelain-ish commands that require a working tree refuses to + work in a bare repository. * Reflog From 449266469dbf96be6e63fb6d7c8c0ac15e6bc79e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 16 Jan 2007 16:52:04 -0800 Subject: [PATCH 0179/2612] v1.5.0.txt : minor copyediting. --- v1.5.0.txt | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 16e35f19b9d083..e931ad19ed1e44 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -168,9 +168,10 @@ Updates in v1.5.0 since v1.4.4 series Existing repositories that have been using reflog may get complaints from fsck-objects and may not be able to run - git-repack; please run "git reflog expire --stale-fix --all" - first to remove reflog entries that refer to commits that are - no longer in the repository when that happens. + git-repack, if you had run git-prune from older git; please + run "git reflog expire --stale-fix --all" first to remove + reflog entries that refer to commits that are no longer in + the repository when that happens. - git-branch knows how to rename branches and moves existing reflog data from the old branch to the new one. @@ -200,13 +201,14 @@ Updates in v1.5.0 since v1.4.4 series checkout" refuses when the detached HEAD is not pointed by any existing ref (an existing branch, a remote tracking branch or a tag). This safety can be overriden with "git - checout -f". + checkout -f $branch". * Packed refs - Repositories with hundreds of tags have been paying large - overhead, both in storage and in runtime. A new command, + overhead, both in storage and in runtime, due to the + traditional one-ref-per-file format. A new command, git-pack-refs, can be used to "pack" them in more efficient representation. @@ -217,9 +219,9 @@ Updates in v1.5.0 since v1.4.4 series * Configuration - - configuration related to colorize setting are consolidated - under color.* namespace (older diff.color.*, status.color.* - are still supported). + - configuration related to color setting are consolidated under + color.* namespace (older diff.color.*, status.color.* are + still supported). * Less external dependency @@ -260,10 +262,10 @@ Updates in v1.5.0 since v1.4.4 series - Tools for e-mailed patch application now default to -u behaviour; i.e. it always re-codes from the e-mailed encoding to the encoding specified with i18n.commitencoding. This - unfortunately forces projects that have happily using a - legacy encoding without setting i18n.commitencoding, but - taken with other improvement, please excuse us for this very - minor one-time inconvenience. + unfortunately forces projects that have happily been using a + legacy encoding without setting i18n.commitencoding to set + the configuration, but taken with other improvement, please + excuse us for this very minor one-time inconvenience. * Foreign SCM interfaces @@ -297,8 +299,8 @@ Updates in v1.5.0 since v1.4.4 series * Shallow clones - There is a partial support for 'shallow' repositories that - keeps only recent history now. A 'shallow clone' is created - by specifying how deep that truncated history should be. + keeps only recent history. A 'shallow clone' is created by + specifying how deep that truncated history should be. Currently a shallow repository has number of limitations: From 3f2a597a432a721a7652003c2b6d8624edc190d7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 17 Jan 2007 01:30:02 -0800 Subject: [PATCH 0180/2612] v1.5.0.txt: what was superseded was git-tar-tree, not git-tar --- v1.5.0.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index e931ad19ed1e44..2fccf8e0571f33 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -50,7 +50,7 @@ git. by default on a tty. Introduced between v1.4.1 and v1.4.2; this may surprise old timers. - - 'git archive' superseded 'git tar' in v1.4.3; + - 'git archive' superseded 'git tar-tree' in v1.4.3; - 'git cvsserver' was new invention in v1.3.0; From d35f38b66a6283cac52ceb456298212a7966e183 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 21 Jan 2007 03:03:50 -0800 Subject: [PATCH 0181/2612] v1.5.0.txt - updates for -rc2 --- v1.5.0.txt | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 2fccf8e0571f33..1b8ecf0f7dca81 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -144,7 +144,8 @@ Updates in v1.5.0 since v1.4.4 series your repository. - git-fetch used to complain updating the current branch but - this is now allowed for a bare repository. + this is now allowed for a bare repository. So is the use of + 'git-branch -f' to update the current branch. - Porcelain-ish commands that require a working tree refuses to work in a bare repository. @@ -158,7 +159,11 @@ Updates in v1.5.0 since v1.4.4 series "branch@{time}" and "branch@{Nth}" notation. - "git show-branch" learned showing the reflog data with the - new --reflog option. + new --reflog option. "git log" has --walk-reflogs option to + view reflog entries in a more verbose manner. + + - git-branch knows how to rename branches and moves existing + reflog data from the old branch to the new one. - The commits referred to by reflog entries are now protected against pruning. The new command "git reflog expire" can be @@ -173,8 +178,21 @@ Updates in v1.5.0 since v1.4.4 series reflog entries that refer to commits that are no longer in the repository when that happens. - - git-branch knows how to rename branches and moves existing - reflog data from the old branch to the new one. + +* Crufts removal + + - We used to say "old commits are retrievable using reflog and + 'master@{yesterday}' syntax as long as you haven't run + git-prune". We no longer have to say the latter half of the + above sentence, as git-prune does not remove things reachable + from reflog entries. + + - 'git-prune' by default does not remove _everything_ + unreachable, as there is a one-day grace period built-in. + + - There is a toplevel garbage collector script, 'git-gc', that + is an easy way to run 'git-repack -a -d', 'git-reflog gc', + and 'git-prune'. * Detached HEAD @@ -268,6 +286,21 @@ Updates in v1.5.0 since v1.4.4 series excuse us for this very minor one-time inconvenience. +* e-mailed patches + + - See the above I18n section. + + - git-format-patch now enables --binary without being asked. + git-am does _not_ default to it, as sending binary patch via + e-mail is unusual and is harder to review than textual + patches and it is prudent to require the person who is + applying the patch to explicitly ask for it. + + - The default suffix for git-format-patch output is now ".patch", + not ".txt". This can be changed with --suffix=.txt option, + or "format.suffix = .txt" in the configuration. + + * Foreign SCM interfaces - git-svn now requires the Perl SVN:: libraries, the From 85d465eca5c2ccefc6593f0675aa000a0ec4181d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 21 Jan 2007 11:43:10 -0800 Subject: [PATCH 0182/2612] Update DoKernelOrg to make it easier not to install RPMs --- DoKernelOrg | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index bdfa0796b56d43..271b2e9f397a9a 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -46,7 +46,7 @@ maint | master) hera.kernel.org) narch='x86_64 i386' arch=x86_64 ;; - demeter.kernel.org|demeter|old-hera.kernel.org) + demeter.kernel.org|demeter|old-hera.kernel.org|kunrun-vmw-fc5) arch=i386 ;; *) echo >&2 "What are you talking about???" exit 1 ;; @@ -57,8 +57,9 @@ maint | master) make $J git >./:all.log 2>&1 && V=`./git --version | sed -e 's/git version //'` && make rpm >>./:all.log 2>&1 && - case "$arch" in - i386) + case "$narch" in + '') + # This is not the primary build machine. status=$? case "$status" in 0) @@ -76,25 +77,33 @@ maint | master) ;; esac exit $status ;; + *) + ln git-$V.tar.gz $G/. && + make dist-doc >>./:all.log 2>&1 && + ln git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. + ;; esac >>./:all.log 2>&1 && - make dist-doc >>./:all.log 2>&1 && - mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && - ln git-$V.tar.gz git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. && - for a in $narch - do - mkdir -p "$G/RPMS/$a" - ln $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm $G/RPMS/$a/. - done && - ln $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/RPMS/SRPMS/. && - { - # I do not know how it exits, and I do not care much. + case "$NO_RPM_PLEASE" in + '') + mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && for a in $narch do - /usr/local/bin/yummy $G/RPMS/$a - done - /usr/local/bin/yummy $G/RPMS/SRPMS - : - } >>./:all.log 2>&1 && + mkdir -p "$G/RPMS/$a" + ln $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm $G/RPMS/$a/. + done && + ln $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/RPMS/SRPMS/. && + { + # I do not know how it exits, and I do not care much. + for a in $narch + do + /usr/local/bin/yummy $G/RPMS/$a + done + /usr/local/bin/yummy $G/RPMS/SRPMS + : + } >>./:all.log 2>&1 ;; + *) + echo Skipping RPM ;; + esac && make clean && : ;; From 3b172087e0935841c44cf4d26e94036bf0308127 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 21 Jan 2007 17:04:11 -0800 Subject: [PATCH 0183/2612] v1.5.0.txt update (Johannes's suggestions) --- v1.5.0.txt | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 1b8ecf0f7dca81..fb7ed148ded1ee 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -80,7 +80,7 @@ Updates in v1.5.0 since v1.4.4 series otherwise ignored files with an -f option. - git-add tries to be more friendly to users by offering an - interactive mode. + interactive mode ("git-add -i"). - git-commit used to refuse to commit if was different between HEAD and the index (i.e. update-index was @@ -107,7 +107,9 @@ Updates in v1.5.0 since v1.4.4 series - git-clone always uses what is known as "separate remote" layout for a newly created repository with a working tree; i.e. tracking branches in $GIT_DIR/refs/remotes/origin/ are - used to track branches from the origin. + used to track branches from the origin, instead of + $GIT_DIR/refs/heads/, making the difference between remotely + tracked and local branches more obvious. - New branches that appear on the origin side after a clone is made are also tracked automatically. This is done with an @@ -118,10 +120,12 @@ Updates in v1.5.0 since v1.4.4 series in individually if you plan to fetch into the repository with older versions of git (but why would you?). - - git-branch and git-show-branch know remote tracking branches. + - git-branch and git-show-branch know remote tracking branches + (use the command line switch "-r" to list only tracked branches). - git-push can now be used to delete a remote branch or a tag. - This requires the updated git on the remote side. + This requires the updated git on the remote side (use "git + push :refs/heads/" to delete "branch"). - git-push more agressively keeps the transferred objects packed. Earlier we recommended to monitor amount of loose @@ -153,10 +157,14 @@ Updates in v1.5.0 since v1.4.4 series * Reflog - - Reflog records the history of where the tip of each branch - was at each moment. This facility is enabled by default for - repositories with working trees, and can be accessed with the - "branch@{time}" and "branch@{Nth}" notation. + - Reflog records the history from the view point of the local + repository. In other words, regardless of the real history, + the reflog shows the history as seen by one particular + repository (this enables you to ask "what was the current + revision in _this_ repository, yesterday at 1pm?"). This + facility is enabled by default for repositories with working + trees, and can be accessed with the "branch@{time}" and + "branch@{Nth}" notation. - "git show-branch" learned showing the reflog data with the new --reflog option. "git log" has --walk-reflogs option to @@ -208,18 +216,20 @@ Updates in v1.5.0 since v1.4.4 series - After detaching your HEAD, you can go back to an existing branch with usual "git checkout $branch". Also you can - start a new branch using "git checkout -b $newbranch". + start a new branch using "git checkout -b $newbranch" to + start a new branch at that commit. - You can even pull from other repositories, make merges and commits while your HEAD is detached. Also you can use "git - reset" to jump to arbitrary commit. + reset" to jump to arbitrary commit, while still keeping your + HEAD detached. - Going back to undetached state by "git checkout $branch" can - lose the current stat you arrived in these ways, and "git - checkout" refuses when the detached HEAD is not pointed by - any existing ref (an existing branch, a remote tracking - branch or a tag). This safety can be overriden with "git - checkout -f $branch". + Going back to attached state (i.e. on a particular branch) by + "git checkout $branch" can lose the current stat you arrived + in these ways, and "git checkout" refuses when the detached + HEAD is not pointed by any existing ref (an existing branch, + a remote tracking branch or a tag). This safety can be + overriden with "git checkout -f $branch". * Packed refs @@ -248,7 +258,7 @@ Updates in v1.5.0 since v1.4.4 series All 3-way file-level merges are now done internally. - The original implementation of git-merge-recursive which was - in Python has been removed; we have C implementation of it + in Python has been removed; we have a C implementation of it now. - git-shortlog is no longer a Perl script. It no longer @@ -298,7 +308,7 @@ Updates in v1.5.0 since v1.4.4 series - The default suffix for git-format-patch output is now ".patch", not ".txt". This can be changed with --suffix=.txt option, - or "format.suffix = .txt" in the configuration. + or setting the config variable "format.suffix" to ".txt". * Foreign SCM interfaces From 8310f872d89a1084a911ce0f3edc11b727592e07 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sun, 21 Jan 2007 22:26:55 -0500 Subject: [PATCH 0184/2612] v1.5.0.txt: update description of git-gc It doesn't call git-prune, and it does call a lot of other things. Signed-off-by: Jeff King --- v1.5.0.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index fb7ed148ded1ee..ff3f8eb6624b83 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -199,8 +199,8 @@ Updates in v1.5.0 since v1.4.4 series unreachable, as there is a one-day grace period built-in. - There is a toplevel garbage collector script, 'git-gc', that - is an easy way to run 'git-repack -a -d', 'git-reflog gc', - and 'git-prune'. + runs periodic cleanup functions, including 'git-repack -a -d', + 'git-reflog expire', 'git-pack-refs --prune', and 'git-rerere gc'. * Detached HEAD From dba1f6e53c819bb8aaf8e96f7e592c2f228f45cd Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 22 Jan 2007 11:25:44 -0800 Subject: [PATCH 0185/2612] v1.5.0.txt update (suggestions from Carl Worth) --- v1.5.0.txt | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index ff3f8eb6624b83..c0ff0712b1374f 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -10,11 +10,11 @@ happened before the current v1.4.4 release, they are summarized here in the v1.5.0 release notes for people who skipped earlier versions. -In general, you should not have to worry about incompatibility, -and there is no need to perform "repository conversion" if you -are updating to v1.5.0. However, some of the changes are -one-way street upgrades; once you use them your repository -can no longer be used with ancient git. +As of git v1.5.0 there are some optional features that changes +the repository to allow data to be stored and transferred more +efficiently. These features are not enabled by default, as they +will make the repository unusable with older versions of git. +Specifically, the available options are: - There is a configuration variable core.legacyheaders that changes the format of loose objects so that they are more @@ -93,7 +93,9 @@ Updates in v1.5.0 since v1.4.4 series - git-reset ... can be used to revert index entries for selected paths. - - git-update-index is much less visible. + - git-update-index is much less visible. Many suggestions to + use the command in git output and documentation have now been + replaced by simpler commands such as "git add" or "git rm". * Repository layout and objects transfer @@ -200,14 +202,17 @@ Updates in v1.5.0 since v1.4.4 series - There is a toplevel garbage collector script, 'git-gc', that runs periodic cleanup functions, including 'git-repack -a -d', - 'git-reflog expire', 'git-pack-refs --prune', and 'git-rerere gc'. + 'git-reflog expire', 'git-pack-refs --prune', and 'git-rerere + gc'. * Detached HEAD - - You can give non-branch to "git checkout" now. This will - dissociate your HEAD from any of your branches. A typical - use of this feature is to "look around". E.g. + - You can use 'git-checkout' to check out an arbitrary revision + or a tag as well, instead of named branches. This will + dissociate your HEAD from the branch you are currently on. + + A typical use of this feature is to "look around". E.g. $ git checkout v2.6.16 ... compile, test, etc. @@ -238,7 +243,7 @@ Updates in v1.5.0 since v1.4.4 series overhead, both in storage and in runtime, due to the traditional one-ref-per-file format. A new command, git-pack-refs, can be used to "pack" them in more efficient - representation. + representation (you can let git-gc do this for you). - Clones and fetches over dumb transports are now aware of packed refs and can download from repositories that use @@ -343,7 +348,8 @@ Updates in v1.5.0 since v1.4.4 series - There is a partial support for 'shallow' repositories that keeps only recent history. A 'shallow clone' is created by - specifying how deep that truncated history should be. + specifying how deep that truncated history should be + (e.g. "git clone --depth=5 git://some.where/repo.git"). Currently a shallow repository has number of limitations: From d1d9f47f0ebd40f64e4fa6ac4210a77b55c05f53 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 22 Jan 2007 17:15:39 -0800 Subject: [PATCH 0186/2612] v1.5.0.txt updates (Carl Worth's suggestions, batch II) --- v1.5.0.txt | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index c0ff0712b1374f..514614cfc301a1 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -107,11 +107,44 @@ Updates in v1.5.0 since v1.4.4 series already comfortable with your workflow with the layout. - git-clone always uses what is known as "separate remote" - layout for a newly created repository with a working tree; - i.e. tracking branches in $GIT_DIR/refs/remotes/origin/ are - used to track branches from the origin, instead of - $GIT_DIR/refs/heads/, making the difference between remotely - tracked and local branches more obvious. + layout for a newly created repository with a working tree. + + A repository with the separate remote layout starts with only + one default branch, 'master', to be used for your own + development. Unlike the traditional layout that copied all + the upstream branches into your branch namespace (while + renaming their 'master' to your 'origin'), the new layout + puts upstream branches into local "remote-tracking branches" + with their own namespace. These can be referenced with names + such as "origin/$upstream_branch_name" and are stored in + .git/refs/remotes rather than .git/refs/heads where normal + branches are stored. + + This layout keeps your own branch namespace less cluttered, + avoids name collision with your upstream, makes it possible + to automatically track new branches created at the remote + after you clone from it, and makes it easier to interact with + more than one remote repository (you can use "git remote" to + add other repositories to track). There might be some + surprises: + + * 'git branch' does not show the remote tracking branches. + It only lists your own branches. Use '-r' option to view + the tracking branches. + + * If you are forking off of a branch obtained from the + upstream, you would have done something like 'git branch + my-next next', because traditional layout dropped the + tracking branch 'next' into your own branch namespace. + With the separate remote layout, you say 'git branch next + origin/next', which allows you to use the matching name + 'next' for your own branch. It also allows you to track a + remote other than 'origin' (i.e. where you initially cloned + from) and fork off of a branch from there the same way + (e.g. "git branch mingw j6t/master"). + + Repositories initialized with the traditional layout continue + to work. - New branches that appear on the origin side after a clone is made are also tracked automatically. This is done with an From 8fb5b9db666db16dd235a0d0b18aa48dd00c2638 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 29 Jan 2007 02:47:28 -0800 Subject: [PATCH 0187/2612] v1.5.0.txt: Post -rc2 updates --- v1.5.0.txt | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/v1.5.0.txt b/v1.5.0.txt index 514614cfc301a1..0d4becf3793505 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -168,9 +168,19 @@ Updates in v1.5.0 since v1.4.4 series accumulated too many small packs this way as well. Updated git-count-objects helps you with this. + - git-fetch also more agressively keeps the transferred objects + packed. This behaviour of git-push and git-fetch can be + tweaked with a single configuration transfer.unpacklimit (but + usually there should not be any need for a user to tweak it). + - A new command, git-remote, can help you manage your remote tracking branch definitions. + - You may need to specify explicit paths for upload-pack and/or + receive-pack due to your ssh daemon configuration on the + other end. This can now be done via remote.*.uploadpack and + remote.*.receivepack configuration. + * Bare repositories @@ -238,6 +248,12 @@ Updates in v1.5.0 since v1.4.4 series 'git-reflog expire', 'git-pack-refs --prune', and 'git-rerere gc'. + - The output from fsck ("fsck-objects" is called just "fsck" + now, but the old name continues to work) was needlessly + alarming in that it warned missing objects that are reachable + only from dangling objects. This has been corrected and the + output is much more useful. + * Detached HEAD @@ -289,6 +305,35 @@ Updates in v1.5.0 since v1.4.4 series color.* namespace (older diff.color.*, status.color.* are still supported). + - 'git-repo-config' command is accessible as 'git-config' now. + + +* Updated features + + - git-describe uses better criteria to pick a base ref. It + used to pick the one with the newest timestamp, but now it + picks the one that is topologically the closest (that is, + among ancestors of commit C, the ref T that has the shortest + output from "git-rev-list T..C" is chosen). + + - git-describe gives the number of commits since the base ref + between the refname and the hash suffix. E.g. the commit one + before v2.6.20-rc6 in the kernel repository is: + + v2.6.20-rc5-306-ga21b069 + + which tells you that its object name begins with a21b069, + v2.6.20-rc5 is an ancestor of it (meaning, the commit + contains everything -rc5 has), and there are 306 commits + since v2.6.20-rc5. + + - git-describe with --abbrev=0 can be used to show only the + name of the base ref. + + - git-blame learned a new option, --incremental, that tells it + to output the blames as they are assigned. A sample script + to use it is also included as contrib/blameview. + * Less external dependency From 98084c22fa565c507a4dc1dfe22153c01b7be0c3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Feb 2007 00:49:39 -0800 Subject: [PATCH 0188/2612] WI: dedent a bit --- WI | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/WI b/WI index d586477b1d18af..a2e822003c5710 100755 --- a/WI +++ b/WI @@ -5,9 +5,11 @@ maint_at=$(git rev-parse --verify refs/heads/maint) master_at=$(git rev-parse --verify refs/heads/master) log () { - git log --no-merges "$@" | - git shortlog | - perl -pe 'if (!/^ / && !/^$/) { s/^/ / }' + git shortlog --no-merges "$@" | + perl -pe ' + if (/^ /) { s// /; } + elsif (!/^$/) { s/^/ / } + ' } echo "To: git@vger.kernel.org" From 1860ce0d3ad583e578d22adeaf2d82c261bc0cca Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Feb 2007 00:50:21 -0800 Subject: [PATCH 0189/2612] v1.5.0.txt: HEAD reflog is almost ready. I plan to merge Nico's reflog-on-HEAD before 1.5.0, so describe it here. --- v1.5.0.txt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/v1.5.0.txt b/v1.5.0.txt index 0d4becf3793505..de038b4d456bc8 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -212,12 +212,20 @@ Updates in v1.5.0 since v1.4.4 series "branch@{Nth}" notation. - "git show-branch" learned showing the reflog data with the - new --reflog option. "git log" has --walk-reflogs option to - view reflog entries in a more verbose manner. + new -g option. "git log" has -s option to view reflog + entries in a more verbose manner. - git-branch knows how to rename branches and moves existing reflog data from the old branch to the new one. + - In addition to the reflog support in v1.4.4 series, HEAD + reference maintains its own log. "HEAD@{5.minutes.ago}" + means the commit you were at 5 minutes ago, which takes + branch switching into account. If you want to know where the + tip of your current branch was at 5 minutes ago, you need to + explicitly say its name (e.g. "master@{5.minutes.ago}") or + omit the refname altogether i.e. "@{5.minutes.ago}". + - The commits referred to by reflog entries are now protected against pruning. The new command "git reflog expire" can be used to truncate older reflog entries and entries that refer From 6cc56c9a3739a3ba21a4f792a583819ed945d478 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 6 Feb 2007 02:06:43 -0800 Subject: [PATCH 0190/2612] Preparing for v1.5.0-rc4 --- v1.5.0.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/v1.5.0.txt b/v1.5.0.txt index de038b4d456bc8..3184fe129b20de 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -155,6 +155,11 @@ Updates in v1.5.0 since v1.4.4 series in individually if you plan to fetch into the repository with older versions of git (but why would you?). + - Similarly, wildcard refspec "refs/heads/*:refs/remotes/me/*" + can be given to "git-push" command to update the tracking + branches that is used to track the repository you are pushing + from on the remote side. + - git-branch and git-show-branch know remote tracking branches (use the command line switch "-r" to list only tracked branches). @@ -342,6 +347,8 @@ Updates in v1.5.0 since v1.4.4 series to output the blames as they are assigned. A sample script to use it is also included as contrib/blameview. + - git-blame starts annotating from the working tree by default. + * Less external dependency @@ -411,6 +418,8 @@ Updates in v1.5.0 since v1.4.4 series 'set-tree', and 'dcommit' is the recommended replacement for day-to-day work. + - git fast-import backend. + * User support From 48993f0089569a3a5c8b333501259178c4aaf7ea Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 12 Feb 2007 23:38:39 -0800 Subject: [PATCH 0191/2612] v1.5.0.txt: git GUI --- v1.5.0.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/v1.5.0.txt b/v1.5.0.txt index 3184fe129b20de..efe8e4eb854dfc 100644 --- a/v1.5.0.txt +++ b/v1.5.0.txt @@ -429,6 +429,9 @@ Updates in v1.5.0 since v1.4.4 series - Better error messages for often used Porcelainish commands. + - Git GUI. This is a simple Tk based graphical interface for + common Git operations. + * Sliding mmap From a5642e680a258928e4fdf76d83a4c3416369e607 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Feb 2007 15:19:59 -0800 Subject: [PATCH 0192/2612] Update dodoc to point older documentations from the latest. --- dodoc.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dodoc.sh b/dodoc.sh index d6571ba7c62890..a839bdab0bffa4 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -72,7 +72,10 @@ make WEBDOC_DEST="$DOCREPO/doc-htmlpages" install-webdoc >../:html.log 2>&1 && if test -d $PUBLIC then - make WEBDOC_DEST="$PUBLIC" install-webdoc >>../:html.log 2>&1 + rm -f git.html && + make WEBDOC_DEST="$PUBLIC" ASCIIDOC_EXTRA='-a stalenotes' \ + install-webdoc >>../:html.log 2>&1 && + rm -f git.html else echo "* No public html at $PUBLIC" fi || exit $? From f3f63cf475c77425b1b21a773d85323554a334cb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Feb 2007 15:47:32 -0800 Subject: [PATCH 0193/2612] TODO update --- TODO | 44 +++++--------------------------------------- 1 file changed, 5 insertions(+), 39 deletions(-) diff --git a/TODO b/TODO index bb752d7e890e04..ccab43208cb224 100644 --- a/TODO +++ b/TODO @@ -9,23 +9,9 @@ The GIT To-Do File Recent issues ------------- -From: Karl Hasselström -Message-ID: <20061026172603.GA21256@diana.vm.bytemark.co.uk> - -It might make sense to make --use-separate-remote the default. - -[jc: The only downside that I can think of is that it affects me -or anybody who works on more than one machine on multiple -branches slightly negatively. - -But that is just a minor inconvenience to a minority. Most of -the world follow others' repositories, and defaulting to use -separate-remotes would help them a lot.] - -From: Junio C Hamano - -commit walkers still have issues with packed and then pruned -refs. +Maybe abandon this and have something similar on the main +branch, starting full at the beginning of the cycle and ending +empty (or full of "not in next release" entries) at the release? From: Franck Bui-Huu Message-ID: <450EABD0.1040102@innova-card.com> @@ -41,13 +27,6 @@ git-mirror (reverse of git-push --all). [jc: may want the finished version for inclusion] -From: Shawn Pearce -Message-ID: <20060930045037.GB18479@spearce.org> - -"git ref-log" command to interact with ref-log? - -[jc: not much interest from users?] - From: Stefan Richter Message-ID: <4523EC14.6070806@s5r6.in-berlin.de> @@ -68,18 +47,6 @@ not just diff with the first parent for a merge. Technical (milder) ------------------ -* duplicated refspec given to "fetch-pack a a a" makes it emit - strange error message because it triggers the "match only - once" logic. Maybe strip the dups on the input side - (Uwe Zeisberger - <20060608073857.GA5072@informatik.uni-freiburg.de>). - -* map only parts of huge packfiles and LRU fragments of them. - People are starting to try git on projects with deep history - and/or many objects, e.g. Mozilla. - - [jc: ping Shawn or give up and do this myself.] - * upload-pack support for start fetching from any valid point on the history, not just published refs. (Erik W. Biederman ) @@ -93,14 +60,13 @@ Technical (trivial) * Mbx (not mbox) support for git-mailsplit. -* log-tree.c: pad sequence numbers with leading 0 if a series is - larger than 9, around ll.133? - * git-clone fail .git/refs/foo (Yann Dirson ) <20060610225040.GA7766@nowhere.earth> * git-proxy should be spawned with sh -c 'command' $1 $2. +[jc: should it?] + * Maybe a true git-proxy command that reads the first request pkt-line, and redirects the request to its real destination. From ffdf9acfb0188d8767ab61c38f1d6ff4fab01f18 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Feb 2007 22:15:29 -0800 Subject: [PATCH 0194/2612] Do not rebuild git.html unnecessarily --- dodoc.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dodoc.sh b/dodoc.sh index a839bdab0bffa4..7869dac5be4ebf 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -72,10 +72,11 @@ make WEBDOC_DEST="$DOCREPO/doc-htmlpages" install-webdoc >../:html.log 2>&1 && if test -d $PUBLIC then - rm -f git.html && + # This is iffy... + mv git.html saved-git-html && make WEBDOC_DEST="$PUBLIC" ASCIIDOC_EXTRA='-a stalenotes' \ install-webdoc >>../:html.log 2>&1 && - rm -f git.html + mv saved-git-html git.html else echo "* No public html at $PUBLIC" fi || exit $? From c652b67e6e0051ad753f9a01fe9fff7c7b8d38bb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Feb 2007 22:15:54 -0800 Subject: [PATCH 0195/2612] Retire v1.5.0 notes. --- v1.5.0.txt | 468 ----------------------------------------------------- 1 file changed, 468 deletions(-) delete mode 100644 v1.5.0.txt diff --git a/v1.5.0.txt b/v1.5.0.txt deleted file mode 100644 index efe8e4eb854dfc..00000000000000 --- a/v1.5.0.txt +++ /dev/null @@ -1,468 +0,0 @@ -GIT v1.5.0 Release Notes -======================== - -Old news --------- - -This section is for people who are upgrading from ancient -versions of git. Although all of the changes in this section -happened before the current v1.4.4 release, they are summarized -here in the v1.5.0 release notes for people who skipped earlier -versions. - -As of git v1.5.0 there are some optional features that changes -the repository to allow data to be stored and transferred more -efficiently. These features are not enabled by default, as they -will make the repository unusable with older versions of git. -Specifically, the available options are: - - - There is a configuration variable core.legacyheaders that - changes the format of loose objects so that they are more - efficient to pack and to send out of the repository over git - native protocol, since v1.4.2. However, loose objects - written in the new format cannot be read by git older than - that version; people fetching from your repository using - older clients over dumb transports (e.g. http) using older - versions of git will also be affected. - - - Since v1.4.3, configuration repack.usedeltabaseoffset allows - packfile to be created in more space efficient format, which - cannot be read by git older than that version. - -The above two are not enabled by default and you explicitly have -to ask for them, because these two features make repositories -unreadable by older versions of git, and in v1.5.0 we still do -not enable them by default for the same reason. We will change -this default probably 1 year after 1.4.2's release, when it is -reasonable to expect everybody to have new enough version of -git. - - - 'git pack-refs' appeared in v1.4.4; this command allows tags - to be accessed much more efficiently than the traditional - 'one-file-per-tag' format. Older git-native clients can - still fetch from a repository that packed and pruned refs - (the server side needs to run the up-to-date version of git), - but older dumb transports cannot. Packing of refs is done by - an explicit user action, either by use of "git pack-refs - --prune" command or by use of "git gc" command. - - - 'git -p' to paginate anything -- many commands do pagination - by default on a tty. Introduced between v1.4.1 and v1.4.2; - this may surprise old timers. - - - 'git archive' superseded 'git tar-tree' in v1.4.3; - - - 'git cvsserver' was new invention in v1.3.0; - - - 'git repo-config', 'git grep', 'git rebase' and 'gitk' were - seriously enhanced during v1.4.0 timeperiod. - - - 'gitweb' became part of git.git during v1.4.0 timeperiod and - seriously modified since then. - - - reflog is an v1.4.0 invention. This allows you to name a - revision that a branch used to be at (e.g. "git diff - master@{yesterday} master" allows you to see changes since - yesterday's tip of the branch). - - -Updates in v1.5.0 since v1.4.4 series -------------------------------------- - -* Index manipulation - - - git-add is to add contents to the index (aka "staging area" - for the next commit), whether the file the contents happen to - be is an existing one or a newly created one. - - - git-add without any argument does not add everything - anymore. Use 'git-add .' instead. Also you can add - otherwise ignored files with an -f option. - - - git-add tries to be more friendly to users by offering an - interactive mode ("git-add -i"). - - - git-commit used to refuse to commit if was - different between HEAD and the index (i.e. update-index was - used on it earlier). This check was removed. - - - git-rm is much saner and safer. It is used to remove paths - from both the index file and the working tree, and makes sure - you are not losing any local modification before doing so. - - - git-reset ... can be used to revert index - entries for selected paths. - - - git-update-index is much less visible. Many suggestions to - use the command in git output and documentation have now been - replaced by simpler commands such as "git add" or "git rm". - - -* Repository layout and objects transfer - - - The data for origin repository is stored in the configuration - file $GIT_DIR/config, not in $GIT_DIR/remotes/, for newly - created clones. The latter is still supported and there is - no need to convert your existing repository if you are - already comfortable with your workflow with the layout. - - - git-clone always uses what is known as "separate remote" - layout for a newly created repository with a working tree. - - A repository with the separate remote layout starts with only - one default branch, 'master', to be used for your own - development. Unlike the traditional layout that copied all - the upstream branches into your branch namespace (while - renaming their 'master' to your 'origin'), the new layout - puts upstream branches into local "remote-tracking branches" - with their own namespace. These can be referenced with names - such as "origin/$upstream_branch_name" and are stored in - .git/refs/remotes rather than .git/refs/heads where normal - branches are stored. - - This layout keeps your own branch namespace less cluttered, - avoids name collision with your upstream, makes it possible - to automatically track new branches created at the remote - after you clone from it, and makes it easier to interact with - more than one remote repository (you can use "git remote" to - add other repositories to track). There might be some - surprises: - - * 'git branch' does not show the remote tracking branches. - It only lists your own branches. Use '-r' option to view - the tracking branches. - - * If you are forking off of a branch obtained from the - upstream, you would have done something like 'git branch - my-next next', because traditional layout dropped the - tracking branch 'next' into your own branch namespace. - With the separate remote layout, you say 'git branch next - origin/next', which allows you to use the matching name - 'next' for your own branch. It also allows you to track a - remote other than 'origin' (i.e. where you initially cloned - from) and fork off of a branch from there the same way - (e.g. "git branch mingw j6t/master"). - - Repositories initialized with the traditional layout continue - to work. - - - New branches that appear on the origin side after a clone is - made are also tracked automatically. This is done with an - wildcard refspec "refs/heads/*:refs/remotes/origin/*", which - older git does not understand, so if you clone with 1.5.0, - you would need to downgrade remote.*.fetch in the - configuration file to specify each branch you are interested - in individually if you plan to fetch into the repository with - older versions of git (but why would you?). - - - Similarly, wildcard refspec "refs/heads/*:refs/remotes/me/*" - can be given to "git-push" command to update the tracking - branches that is used to track the repository you are pushing - from on the remote side. - - - git-branch and git-show-branch know remote tracking branches - (use the command line switch "-r" to list only tracked branches). - - - git-push can now be used to delete a remote branch or a tag. - This requires the updated git on the remote side (use "git - push :refs/heads/" to delete "branch"). - - - git-push more agressively keeps the transferred objects - packed. Earlier we recommended to monitor amount of loose - objects and repack regularly, but you should repack when you - accumulated too many small packs this way as well. Updated - git-count-objects helps you with this. - - - git-fetch also more agressively keeps the transferred objects - packed. This behaviour of git-push and git-fetch can be - tweaked with a single configuration transfer.unpacklimit (but - usually there should not be any need for a user to tweak it). - - - A new command, git-remote, can help you manage your remote - tracking branch definitions. - - - You may need to specify explicit paths for upload-pack and/or - receive-pack due to your ssh daemon configuration on the - other end. This can now be done via remote.*.uploadpack and - remote.*.receivepack configuration. - - -* Bare repositories - - - Certain commands change their behaviour in a bare repository - (i.e. a repository without associated working tree). We use - a fairly conservative heuristic (if $GIT_DIR is ".git", or - ends with "/.git", the repository is not bare) to decide if a - repository is bare, but "core.bare" configuration variable - can be used to override the heuristic when it misidentifies - your repository. - - - git-fetch used to complain updating the current branch but - this is now allowed for a bare repository. So is the use of - 'git-branch -f' to update the current branch. - - - Porcelain-ish commands that require a working tree refuses to - work in a bare repository. - - -* Reflog - - - Reflog records the history from the view point of the local - repository. In other words, regardless of the real history, - the reflog shows the history as seen by one particular - repository (this enables you to ask "what was the current - revision in _this_ repository, yesterday at 1pm?"). This - facility is enabled by default for repositories with working - trees, and can be accessed with the "branch@{time}" and - "branch@{Nth}" notation. - - - "git show-branch" learned showing the reflog data with the - new -g option. "git log" has -s option to view reflog - entries in a more verbose manner. - - - git-branch knows how to rename branches and moves existing - reflog data from the old branch to the new one. - - - In addition to the reflog support in v1.4.4 series, HEAD - reference maintains its own log. "HEAD@{5.minutes.ago}" - means the commit you were at 5 minutes ago, which takes - branch switching into account. If you want to know where the - tip of your current branch was at 5 minutes ago, you need to - explicitly say its name (e.g. "master@{5.minutes.ago}") or - omit the refname altogether i.e. "@{5.minutes.ago}". - - - The commits referred to by reflog entries are now protected - against pruning. The new command "git reflog expire" can be - used to truncate older reflog entries and entries that refer - to commits that have been pruned away previously with older - versions of git. - - Existing repositories that have been using reflog may get - complaints from fsck-objects and may not be able to run - git-repack, if you had run git-prune from older git; please - run "git reflog expire --stale-fix --all" first to remove - reflog entries that refer to commits that are no longer in - the repository when that happens. - - -* Crufts removal - - - We used to say "old commits are retrievable using reflog and - 'master@{yesterday}' syntax as long as you haven't run - git-prune". We no longer have to say the latter half of the - above sentence, as git-prune does not remove things reachable - from reflog entries. - - - 'git-prune' by default does not remove _everything_ - unreachable, as there is a one-day grace period built-in. - - - There is a toplevel garbage collector script, 'git-gc', that - runs periodic cleanup functions, including 'git-repack -a -d', - 'git-reflog expire', 'git-pack-refs --prune', and 'git-rerere - gc'. - - - The output from fsck ("fsck-objects" is called just "fsck" - now, but the old name continues to work) was needlessly - alarming in that it warned missing objects that are reachable - only from dangling objects. This has been corrected and the - output is much more useful. - - -* Detached HEAD - - - You can use 'git-checkout' to check out an arbitrary revision - or a tag as well, instead of named branches. This will - dissociate your HEAD from the branch you are currently on. - - A typical use of this feature is to "look around". E.g. - - $ git checkout v2.6.16 - ... compile, test, etc. - $ git checkout v2.6.17 - ... compile, test, etc. - - - After detaching your HEAD, you can go back to an existing - branch with usual "git checkout $branch". Also you can - start a new branch using "git checkout -b $newbranch" to - start a new branch at that commit. - - - You can even pull from other repositories, make merges and - commits while your HEAD is detached. Also you can use "git - reset" to jump to arbitrary commit, while still keeping your - HEAD detached. - - Going back to attached state (i.e. on a particular branch) by - "git checkout $branch" can lose the current stat you arrived - in these ways, and "git checkout" refuses when the detached - HEAD is not pointed by any existing ref (an existing branch, - a remote tracking branch or a tag). This safety can be - overriden with "git checkout -f $branch". - - -* Packed refs - - - Repositories with hundreds of tags have been paying large - overhead, both in storage and in runtime, due to the - traditional one-ref-per-file format. A new command, - git-pack-refs, can be used to "pack" them in more efficient - representation (you can let git-gc do this for you). - - - Clones and fetches over dumb transports are now aware of - packed refs and can download from repositories that use - them. - - -* Configuration - - - configuration related to color setting are consolidated under - color.* namespace (older diff.color.*, status.color.* are - still supported). - - - 'git-repo-config' command is accessible as 'git-config' now. - - -* Updated features - - - git-describe uses better criteria to pick a base ref. It - used to pick the one with the newest timestamp, but now it - picks the one that is topologically the closest (that is, - among ancestors of commit C, the ref T that has the shortest - output from "git-rev-list T..C" is chosen). - - - git-describe gives the number of commits since the base ref - between the refname and the hash suffix. E.g. the commit one - before v2.6.20-rc6 in the kernel repository is: - - v2.6.20-rc5-306-ga21b069 - - which tells you that its object name begins with a21b069, - v2.6.20-rc5 is an ancestor of it (meaning, the commit - contains everything -rc5 has), and there are 306 commits - since v2.6.20-rc5. - - - git-describe with --abbrev=0 can be used to show only the - name of the base ref. - - - git-blame learned a new option, --incremental, that tells it - to output the blames as they are assigned. A sample script - to use it is also included as contrib/blameview. - - - git-blame starts annotating from the working tree by default. - - -* Less external dependency - - - We no longer require the "merge" program from the RCS suite. - All 3-way file-level merges are now done internally. - - - The original implementation of git-merge-recursive which was - in Python has been removed; we have a C implementation of it - now. - - - git-shortlog is no longer a Perl script. It no longer - requires output piped from git-log; it can accept revision - parameters directly on the command line. - - -* I18n - - - We have always encouraged the commit message to be encoded in - UTF-8, but the users are allowed to use legacy encoding as - appropriate for their projects. This will continue to be the - case. However, a non UTF-8 commit encoding _must_ be - explicitly set with i18n.commitencoding in the repository - where a commit is made; otherwise git-commit-tree will - complain if the log message does not look like a valid UTF-8 - string. - - - The value of i18n.commitencoding in the originating - repository is recorded in the commit object on the "encoding" - header, if it is not UTF-8. git-log and friends notice this, - and reencodes the message to the log output encoding when - displaying, if they are different. The log output encoding - is determined by "git log --encoding=", - i18n.logoutputencoding configuration, or i18n.commitencoding - configuration, in the decreasing order of preference, and - defaults to UTF-8. - - - Tools for e-mailed patch application now default to -u - behaviour; i.e. it always re-codes from the e-mailed encoding - to the encoding specified with i18n.commitencoding. This - unfortunately forces projects that have happily been using a - legacy encoding without setting i18n.commitencoding to set - the configuration, but taken with other improvement, please - excuse us for this very minor one-time inconvenience. - - -* e-mailed patches - - - See the above I18n section. - - - git-format-patch now enables --binary without being asked. - git-am does _not_ default to it, as sending binary patch via - e-mail is unusual and is harder to review than textual - patches and it is prudent to require the person who is - applying the patch to explicitly ask for it. - - - The default suffix for git-format-patch output is now ".patch", - not ".txt". This can be changed with --suffix=.txt option, - or setting the config variable "format.suffix" to ".txt". - - -* Foreign SCM interfaces - - - git-svn now requires the Perl SVN:: libraries, the - command-line backend was too slow and limited. - - - the 'commit' subcommand of git-svn has been renamed to - 'set-tree', and 'dcommit' is the recommended replacement for - day-to-day work. - - - git fast-import backend. - - -* User support - - - Quite a lot of documentation updates. - - - Bash completion scripts have been updated heavily. - - - Better error messages for often used Porcelainish commands. - - - Git GUI. This is a simple Tk based graphical interface for - common Git operations. - - -* Sliding mmap - - - We used to assume that we can mmap the whole packfile while - in use, but with a large project this consumes huge virtual - memory space and truly huge ones would not fit in the - userland address space on 32-bit platforms. We now mmap huge - packfile in pieces to avoid this problem. - - -* Shallow clones - - - There is a partial support for 'shallow' repositories that - keeps only recent history. A 'shallow clone' is created by - specifying how deep that truncated history should be - (e.g. "git clone --depth=5 git://some.where/repo.git"). - - Currently a shallow repository has number of limitations: - - - Cloning and fetching _from_ a shallow clone are not - supported (nor tested -- so they might work by accident but - they are not expected to). - - - Pushing from nor into a shallow clone are not expected to - work. - - - Merging inside a shallow repository would work as long as a - merge base is found in the recent history, but otherwise it - will be like merging unrelated histories and may result in - huge conflicts. - - but this would be more than adequate for people who want to - look at near the tip of a big project with a deep history and - send patches in e-mail format. From 8368eb5e07ba704108e9f7f4d795b5c1114043ef Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Mar 2007 22:30:57 -0800 Subject: [PATCH 0196/2612] Add "Git monthly" summary script --- Summary | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 Summary diff --git a/Summary b/Summary new file mode 100755 index 00000000000000..84c713e900d436 --- /dev/null +++ b/Summary @@ -0,0 +1,36 @@ +#!/bin/sh + +tmp=.git/summary-$$ +trap 'rm -f $tmp-*' 0 + +since="$1" +until="$2" + +git-rev-list --no-merges --since="$1" --until="$2" master >"$tmp-0.txt" +top=$(head -n 1 "$tmp-0.txt") +bottom=$(tail -n 1 "$tmp-0.txt") + +num_patches=$(git rev-list --no-merges $bottom..$top | wc -l) +git shortlog -s -n --no-merges $bottom..$top >"$tmp-0.txt" +num_contrib=$(wc -l <"$tmp-0.txt") + +summary=$(git diff --stat -M $bottom..$top | tail -n 1) +num_files=$(expr "$summary" : ' *\([1-9][0-9]*\) files changed') +num_added=$(expr "$summary" : '.*changed, \([1-9][0-9]*\) insertions') +num_deleted=$(expr "$summary" : '.*, \([1-9][0-9]*\) deletions') + +cat < Date: Sun, 4 Mar 2007 22:31:18 -0800 Subject: [PATCH 0197/2612] Meta/V checks the versions of four primary integration branches. --- V | 5 +++++ 1 file changed, 5 insertions(+) create mode 100755 V diff --git a/V b/V new file mode 100755 index 00000000000000..f6553a4e4e73c8 --- /dev/null +++ b/V @@ -0,0 +1,5 @@ +#!/bin/sh +for v in maint master next pu +do + echo $v $(git-describe $v) $($HOME/git-$v/bin/git version) +done From 18f73455f3a37bbc3c11f181ecbfabbf7610e7ac Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Mar 2007 22:31:50 -0800 Subject: [PATCH 0198/2612] Meta/Make -pedantic to use -Wall --- Make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Make b/Make index fabe6418d15c25..cee9fa62aa09c9 100755 --- a/Make +++ b/Make @@ -36,7 +36,7 @@ while case $# in 0) break ;; esac do case "$1" in -pedantic) - O="$O -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=600" + O="$O -Werror -Wall -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=600" ;; --) shift From 874a2aa6053e778a22c985323c69311cfffb65a7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Mar 2007 22:32:22 -0800 Subject: [PATCH 0199/2612] Meta/WI to exclude material already in 'maint' from 'master' report. --- WI | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/WI b/WI index a2e822003c5710..988eb4954eca35 100755 --- a/WI +++ b/WI @@ -32,7 +32,8 @@ list=`git-rev-list $tagged refs/heads/master 2>/dev/null` if test -n "$list" then echo - echo "* The 'master' branch has these since the last announcement." + echo "* The 'master' branch has these since the last announcement" + echo " in addition to the above." echo - log $tagged heads/master + log $tagged heads/master ^heads/maint fi From 71b785f8e26191ff928988d245d4b22e89118ba1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 4 Mar 2007 22:56:00 -0800 Subject: [PATCH 0200/2612] Remove old subproject design notes. --- Makefile | 11 -- Subpro.txt | 482 ----------------------------------------------------- 2 files changed, 493 deletions(-) delete mode 100644 Makefile delete mode 100644 Subpro.txt diff --git a/Makefile b/Makefile deleted file mode 100644 index 32c8bd857344a8..00000000000000 --- a/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -all: - -clean: - rm -f Subpro.html - - -all: Subpro.html - -%.html: %.txt - asciidoc -bxhtml11 $*.txt - diff --git a/Subpro.txt b/Subpro.txt deleted file mode 100644 index 713b72eea20e56..00000000000000 --- a/Subpro.txt +++ /dev/null @@ -1,482 +0,0 @@ -Notes on Subproject Support -=========================== -Junio C Hamano - -Scenario --------- - -The examples in the following discussion show how this proposal -plans to help this: - -. A project to build an embedded Linux appliance "gadget" is - maintained with git. - -. The project uses linux-2.6 kernel as its subcomponent. It - starts from a particular version of the mainline kernel, but - adds its own code and build infrastructure to fit the - appliance's needs. - -. The working tree of the project is laid out this way: -+ ------------- - Makefile - Builds the whole thing. - linux-2.6/ - The kernel, perhaps modified for the project. - appliance/ - Applications that run on the appliance, and - other bits. ------------- - -. The project is willing to maintain its own changes out of tree - of the Linux kernel project, but would want to be able to feed - the changes upstream, and incorporate upstream changes to its - own tree, taking advantage of the fact that both itself and - the Linux kernel project are version controlled with git. - -. To make the story a bit more interesting, later in the history - of development, `linux-2.6/` and `appliance/` directories will - be renamed to `kernel/` and `gadget/`. - -The idea here is to: - -. Keep `linux-2.6/` part as an independent project. The work by - the project on the kernel part can be naturally exchanged with - the other kernel developers this way. Specifically, a tree - object contained in commit objects belonging to this sub-project - does *not* have `linux-2.6/` directory at the top. - -. Keep the `appliance/` part as another independent project. - Applications are supposed to be more or less independent from - the kernel version, but some other bits might be tied to a - specific kernel version. Again, a tree object contained in - commit objects belonging to this sub-project does *not* have - `appliance/` directory at the top. - -. Have another project that combines the whole thing together, - so that the project can keep track of which versions of the - parts are built together. The Makefile is illustrated above, - but there might be other files and directories. - -We will call the project that binds things together the -'toplevel project'. Other projects that hold `linux-2.6/` part -and `appliance/` part are called 'subprojects'. - - -Setting up ----------- - -Let's say we have been working on the appliance software, -independently version controlled with git. Also the kernel part -has been version controlled separately, like this: ------------- -$ ls -dF current/*/.git current/* -current/Makefile current/appliance/.git/ current/linux-2.6/.git/ -current/appliance/ current/linux-2.6/ ------------- - -Now we would want to get a combined project. First we would -clone from these repositories (which is not strictly needed -- -we could use `$GIT_ALTERNATE_OBJECT_DIRECTORIES` instead): - ------------- -$ mkdir combined && cd combined -$ cp ../current/Makefile . -$ git init-db -$ mkdir -p .git/refs/subs/{kernel,gadget}/{heads,tags} -$ git clone-pack ../current/linux-2.6/ master | read kernel_commit junk -$ git clone-pack ../current/appliance/ master | read gadget_commit junk ------------- - -We will introduce a new command to set up a combined project: - ------------- -$ git bind-projects \ - $kernel_commit linux-2.6/ \ - $gadget_commit appliance/ ------------- - -This would probably do an equivalent of: - ------------- -$ rm -f "$GIT_DIR/index" -$ git read-tree --prefix=linux-2.6/ $kernel_commit -$ git read-tree --prefix=appliance/ $gadget_commit -$ git update-index --bind linux-2.6/ $kernel_commit -$ git update-index --bind appliance/ $gadget_commit ------------- -[NOTE] -============ -Earlier outlines sent to the git mailing list talked -about `$GIT_DIR/bind` to record what subproject are bound to -which subtree in the current working tree and index. This -proposal instead records that information in the index file -with `update-index --bind` command. - -Also note that in this round of proposal, there is no separate -branches that keep track of heads of subprojects. - -`update-index --bind` is not implemented on the core side yet; -it would involve backward incompatible changes to the index -format. -============ - -Let's not forget to add the `Makefile`, and check the whole -thing out from the index file. ------------- -$ git add Makefile -$ git checkout-index -f -u -q -a ------------- - -Now our directory should be identical with the `current` -directory. After making sure of that, we should be able to -commit the whole thing: - ------------- -$ diff -x .git -r ../current ../combined -$ git commit -m 'Initial toplevel project commit' ------------- - -Which should create a new commit object that records what is in -the index file as its tree, with `bind` lines to record which -subproject commit objects are bound at what subdirectory, and -updates the `$GIT_DIR/refs/heads/master`. Such a commit object -might look like this: ------------- -tree 04803b09c300c8325258ccf2744115acc4c57067 -bind 5b2bcc7b2d546c636f79490655b3347acc91d17f linux-2.6/ -bind 0bdd79af62e8621359af08f0afca0ce977348ac7 appliance/ -author Junio C Hamano 1137965565 -0800 -committer Junio C Hamano 1137965565 -0800 - -Initial toplevel project commit ------------- - -Notice that `Makefile` at the top is part of the toplevel -project in this example, but it is not necessary. We could -instead have the appliance subproject include this file. In -such a setup, the appliance subproject would have had `Makefile` -and `appliance/` directory at the toplevel. The `bind` line for -that project would have said "the rest is bound at `/`" and -`write-tree \--exclude=linux-2.6/` would have been used to write -the tree for that subproject out of the combined index. - - -Making further commits ----------------------- - -The easiest case is when you updated the Makefile without -changing anything in the subprojects. In such a case, we just -need to create a new commmit object that records the new tree -with the current `HEAD` as its parent, and with the same set of -`bind` lines. - -When we have changes to the subproject part, we would make a -separate commit to the subproject part and then record the whole -thing by making a commit to the toplevel project. The user -interaction might go this way: ------------- -$ git commit -error: you have changes to the subproject bound at linux-2.6/. -$ git commit --subproject linux-2.6/ -$ git commit ------------- - -With the new `\--subproject` option, the directory structure -rooted at `linux-2.6/` part is written out as a tree, and a new -commit object that records that tree object with the commit -bound to that portion of the tree (`5b2bcc7b` in the above -example) as its parent is created. Then the final `git commit` -would record the whole tree with updated `bind` line for the -`linux-2.6/` part. - - -Checking out ------------- - -After cloning such a toplevel project, `git clone` without `-n` -option would check out the working tree. This is done by -reading the tree object recorded in the commit object (which -records the whole thing), and adding the information from the -"bind" line to the index file. - ------------- -$ cd .. -$ git clone -n combined cloned ;# clone the one we created earlier -$ cd cloned -$ git checkout ------------- - -This round of proposal does not maintain separate branch heads -for subprojects. The bound commits and their subdirectories -are recorded in the index file from the commit object, so there -is no need to do anything other than updating the index and the -working tree. - - -Switching branches ------------------- - -Along with the traditional two-way merge by `read-tree -m -u`, -we would need to look at: - -. `bind` lines in the current `HEAD` commit. - -. `bind` lines in the commit we are switching to. - -. subproject binding information in the index file. - -to make sure we do sensible things. - -Just like until very recently we did not allow switching -branches when two-way merge would lose local changes, we can -start by refusing to switch branches when the subprojects bound -in the index do not match what is recorded in the `HEAD` commit. - -Because in this round of the proposal we do not use the -`$GIT_DIR/bind` file nor separate branches to keep track of -heads of the subprojects, there is nothing else other than the -working tree and the index file that needs to be updated when -switching branches. - - -Merging -------- - -Merging two branches of the toplevel projects can use the -traditional merging mechanism mostly unchanged. The merge base -computation can be done using the `parent` ancestry information -taken from the two toplevel project branch heads being merged, -and merging of the whole tree can be done with a three-way merge -of the whole tree using the merge base and two head commits. -For reasons described later, we would not merge the subproject -parts of the trees during this step, though. - -When the two branch heads use different versions of subproject, -things get a bit tricky. First, let's forget for a moment about -the case where they bind the same project at different location. -We would refuse if they do not have the same number of `bind` -lines that bind something at the same subdirectories. - ------------- -$ git merge 'Merge in a side branch' HEAD side -error: the merged heads have subprojects bound at different places. - ours: - linux-2.6/ - appliance/ - theirs: - kernel/ - gadget/ - manual/ ------------- - -Such renaming can be handled by first moving the bind points in -our branch, and redoing the merge (this is a rare operation -anyway). It might go like this: - ------------- -$ git reset -$ git update-index --unbind linux-2.6/ -$ git update-index --unbind appliance/ -$ git update-index --bind $kernel_commit kernel/ -$ git update-index --bind $gadget_commit gadget/ -$ git commit -m 'Prepare for merge with side branch' -$ git merge 'Merge in a side branch' HEAD side -error: the merged heads have subprojects bound at different places. - ours: - kernel/ - gadget/ - theirs: - kernel/ - gadget/ - manual/ ------------- -[NOTE] -============ -Again, `update-index --unbind` is not implemented yet -on the core side. -============ - -Their branch added another subproject, so this did not work (or -it could be the other way around -- we might have been the one -with `manual/` subproject while they didn't). This suggests -that we may want an option to `git merge` to allow taking a -union of subprojects. Again, this is a rare operation, and -always taking a union would have created a toplevel project that -had both `kernel/` and `linux-2.6/` bound to the same Linux -kernel project from possibly different vintage, so it would be -prudent to require the set of bound subprojects to exactly match -and give the user an option to take a union. - ------------- -$ git merge --union-subprojects 'Merge in a side branch HEAD side -error: the subproject at 'kernel/' needs to be merged first. ------------- - -Here, the version of the Linux kernel project in the `side` -branch was different from what our branch had on our `bind` -line. On what kind of difference should we give this error? -Initially, I think we could require one is the fast forward of -the other (ours might be ahead of theirs, or the other way -around), and take the descendant. - -Or we could do an independent merge of subprojects heads, using -the `parent` ancestry of the bound subproject heads to find -their merge-base and doing a three-way merge. This would leave -the merge result in the subproject part of the working tree and -the index. - -[NOTE] -This is the reason we did not do the whole-tree three way merge -earlier. The subproject commit bound to the merge base commit -used for the toplevel project may not be the merge base between -the subproject commits bound to the two toplevel project -commits. - -So let's deal with the case to merge only a subproject part into -our tree first. - - -Merging subprojects -------------------- - -An operation of more practical importance is to be able to merge -in changes done outside to the projects bound to our toplevel -project. - ------------- -$ git pull --subproject=kernel/ git://git.kernel.org/.../linux-2.6/ ------------- - -might do: - -. fetch the current `HEAD` commit from Linus. -. find the subproject commit bound at kernel/ subtree. -. perform the usual three-way merge of these two commits, in - `kernel/` part of the working tree. - -After that, `git commit \--subproject` option would be needed to -make a commit. - -[NOTE] -This suggests that we would need to have something similar to -`MERGE_HEAD` for merging the subproject part. In the case of -merging two toplevel project commits, we probably can read the -`bind` lines from the `MERGE_HEAD` commit and either our `HEAD` -commit or our index file. Further, we probably would require -that the latter two must match, just as we currently require the -index file matches our `HEAD` commit before `git merge`. - -Just like the current `pull = fetch + merge` semantics, the -subproject aware version `git pull \--subproject=frotz/` would be -a `git fetch \--subproject=frotz/` followed by a `git merge -\--subproject=frotz/`. So the above would be: - -. Fetch the head. -+ ------------- -$ git fetch --subproject=kernel/ git://git.kernel.org/.../linux-2.6/ ------------- -+ -which would fetch the commit chain from the remote repository, and -write something like this to `FETCH_HEAD`: -+ ------------- -3ee68c4...\tfor-merge-into kernel/\tbranch 'master' of git://.../linux-2.6 ------------- - -. Run `git merge`. -+ ------------- -$ git merge --subproject=kernel/ \ - 'Merge git://.../linux-2.6 into kernel/' HEAD 3ee68c4... ------------- - -. In case it does not cleanly automerge, `git merge` would write -the necessary information for a later `git commit` to use in -`MERGE_HEAD`. It may look like this: -+ ------------- -3ee68c4af3fd7228c1be63254b9f884614f9ebb2 kernel/ ------------- -+ -Similarly, `MERGE_MSG` file will hold the merge message. - -With this, a later invocation of `git commit` to record the -result of hand resolving would be able to notice that: - -. We should be first resolving `kernel/` subproject, not the - whole thing. -. The remote `HEAD` is `3ee68c4\...` commit. -. The merge message is `Merge git://\.../linux-2.6 into kernel/`. - -and would make a merge commit, and register that resulting -commit in the index file using `update-index \--bind` instead of -updating *any* branch head. - - -Management of Subprojects -------------------------- - -While the above as a mechanism would support version controlling -of subprojects as a part of *one* larger toplevel project, it -probably is worth pointing out that having a separate repository -to manage the subproject independently would be a good idea. -The same subproject can be incorporated into more than one -toplevel projects, and after all, a subproject should be -something that can stand on its own. In our example scenario, -the `kernel/` project is used as a subproject for the "gadget" -product, but at the same time, the organizaton that runs the -"gadget" project may use Linux on their development machines, -and have their own kernel hackers, not necessarily related to -the use of the kernel in the "gadget" product. - -What this suggests is that not just we need to be able to pull -the kernel development history *into* the subproject of the -"gadget" project, but also we need to be able to push the -development history of the kernel part alone *out* *of* the -"gadget" project to another repository that deals only with the -kernel part. - -It might go this way. First the setup: - ------------- -$ git clone git://git.kernel.org/.../linux-2.6 Linux -$ ls -dF * -cloned/ combined/ current/ Linux/ ------------- - -That is, in addition to the `combined/` which we have been using -to develop the "gadget" product in, we now have a repository for -the kernel, cloned from Linus. In the previous section, we have -outlined how we update the kernel subproject part of `combined/` -repository from the `kernel.org` repository. The same procedure -would work for pulling from `Linux/` repository here. - -We are now going the other way; propagate the kernel work done -in the "gadget" project repository `combined/` back to `Linux/`. -We might do this at the lowest level: - ------------- -$ cd combined -$ git cat-file commit HEAD | - sed -ne 's|^bind \([0-9a-f]*\) kernel/$|\1|p' >.git/refs/heads/linux26 -$ git push ../Linux linux26:master ------------- - -Or, more realistically, since the `Linux` project might already -have their own commits on its `master`: - ------------- -$ cd Linux -$ git pull ../combined linux26 ------------- - -Either way we would need an easy way to maintain the `linux26` -branch in the above example, and that will have to be part of -the wrapper scripts like `git commit` (more likely, that would -be a job for `git commit \--subproject`) for the usability's -sake; in other words, the `cat-file commit` piped to `sed` above -is not something the end user would do, but something that is -done by the wrapper scripts. - -Hopefully the people who work in `Linux/` repository would run -`format-patch` and feed their changes back to the kernel -community. From c3b56def772fccbb62371966cecea93a1d150450 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 14 Mar 2007 23:51:57 -0700 Subject: [PATCH 0201/2612] Meta/Make: No need for removed variables --- Make | 2 -- 1 file changed, 2 deletions(-) diff --git a/Make b/Make index cee9fa62aa09c9..390fd12bca18c8 100755 --- a/Make +++ b/Make @@ -57,6 +57,4 @@ make $d \ GITWEB_CONFIG=$G \ PYTHON_PATH=/usr/bin/python2.4 \ CFLAGS="$O -Wall -Wdeclaration-after-statement -g" \ - WITH_SEND_EMAIL=YesPlease \ - WITH_SVNIMPORT=YesPlease \ "$@" From 29eeff671ae3f74f6278e7fdcdfa23cf2c5749c9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 14 Mar 2007 23:55:10 -0700 Subject: [PATCH 0202/2612] Meta/DoKernelOrg: skip if i386 is not ready yet --- DoKernelOrg | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 271b2e9f397a9a..216621adb126ff 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -88,8 +88,12 @@ maint | master) mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && for a in $narch do - mkdir -p "$G/RPMS/$a" - ln $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm $G/RPMS/$a/. + mkdir -p "$G/RPMS/$a" && + for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm + do + test -f "$rr" || continue + ln "$rr" $G/RPMS/$a/. + done done && ln $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/RPMS/SRPMS/. && { From 7f1d866be598155f3339160786f13f33e9f2df64 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 25 Mar 2007 23:37:43 -0700 Subject: [PATCH 0203/2612] Meta/V: separate branch and describe output with a HT --- V | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/V b/V index f6553a4e4e73c8..9c871bfd111b6d 100755 --- a/V +++ b/V @@ -1,5 +1,5 @@ #!/bin/sh for v in maint master next pu do - echo $v $(git-describe $v) $($HOME/git-$v/bin/git version) + echo "$v $(git-describe $v) $($HOME/git-$v/bin/git version)" done From 653c3f766994a9cb64278a8da6d4b574d441dfe3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Mar 2007 02:04:42 -0700 Subject: [PATCH 0204/2612] dodoc updates. --- dodoc.sh | 141 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 75 insertions(+), 66 deletions(-) diff --git a/dodoc.sh b/dodoc.sh index 7869dac5be4ebf..ca9893ae2edc13 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -29,12 +29,15 @@ ID=`git-rev-parse --verify refs/heads/master` || exit $? unset GIT_DIR -PUBLIC=/pub/software/scm/git/docs && -MASTERREPO=`pwd` && -DOCREPO=`dirname "$0"` && +: ${PUBLIC=/pub/software/scm/git/docs} && +: ${MASTERREPO=`pwd`} && +: ${DOCREPO=`dirname "$0"`} && test "$DOCREPO" != "" && cd "$DOCREPO" || exit $? +tmp=`pwd`/.doctmp-$$ +trap 'rm -f "$tmp".*' 0 + git pull "$MASTERREPO" master && git fetch --tags "$MASTERREPO" || exit $? test $(git-rev-parse --verify refs/heads/master) == "$ID" && @@ -42,74 +45,80 @@ NID=$(git-describe --abbrev=4 "$ID") && test '' != "$NID" || exit $? # Set up subrepositories -test -d doc-htmlpages || ( - mkdir doc-htmlpages && - cd doc-htmlpages && - git init-db || exit $? - - if SID=$(git fetch-pack "$MASTERREPO" html) - then - git update-ref HEAD `expr "$SID" : '\(.*\) .*'` && - git checkout || exit $? - fi -) -test -d doc-manpages || ( - mkdir doc-manpages && - cd doc-manpages && - git init-db || exit $? - - if SID=$(git fetch-pack "$MASTERREPO" man) - then - git update-ref HEAD `expr "$SID" : '\(.*\) .*'` && - git checkout || exit $? - fi -) -find doc-htmlpages doc-manpages -type d -name '.git' -prune -o \ - -type f -print0 | xargs -0 rm -f - -cd Documentation && -make WEBDOC_DEST="$DOCREPO/doc-htmlpages" install-webdoc >../:html.log 2>&1 && +for type in man html +do + test -d doc-${type}pages || ( + mkdir doc-${type}pages && + cd doc-${type}pages && + git init-db || exit $? + + git fetch-pack "$MASTERREPO" ${type} | + while read sha1 name + do + case "$name" in + refs/heads/${type}) + git update-ref HEAD $sha1 && + git checkout || exit $? + break + ;; + esac + done || exit $? + ) || exit + rm -fr doc-$type-inst +done + +make >../:html.log 2>&1 \ + -C Documentation -j 2 \ + WEBDOC_DEST="$DOCREPO/doc-html-inst" install-webdoc || exit + +make >../:man.log 2>&1 \ + -C Documentation -j 2 \ + man1="$DOCREPO/doc-man-inst/man1" \ + man7="$DOCREPO/doc-man-inst/man7" \ + man1dir="$DOCREPO/doc-man-inst/man1" \ + man7dir="$DOCREPO/doc-man-inst/man7" install || exit + +for type in html man +do + find doc-$type-inst -type f | + while read path + do + it=$(expr "$path" : doc-$type-inst/'\(.*\)') || continue + t="doc-${type}pages/$it" + test -f "$t" && diff -q "$path" "$t" && continue + + echo ": $t" && rm -f "$t" && ln "$path" "$t" || exit + ( cd doc-${type}pages && git add "$it" ) + done || exit + + find doc-$type-inst -type f | + sed -e 's|^doc-'$type'-inst/||' | sort >"$tmp.1" && + (cd doc-${type}pages && git ls-files | sort) >"$tmp.2" && + comm -13 "$tmp.1" "$tmp.2" | + ( cd doc-${type}pages && xargs rm -f -- ) || exit + + ( + cd doc-${type}pages + + if git commit -a -m "Autogenerated docs for $NID" + then + git send-pack "$MASTERREPO" master:refs/heads/$type + else + echo "* No changes in $type docs" + fi + ) || exit +done if test -d $PUBLIC then # This is iffy... - mv git.html saved-git-html && - make WEBDOC_DEST="$PUBLIC" ASCIIDOC_EXTRA='-a stalenotes' \ - install-webdoc >>../:html.log 2>&1 && - mv saved-git-html git.html + mv Documentation/git.html Documentation/saved-git-html + make >>../:html.log 2>&1 \ + -C Documentation \ + WEBDOC_DEST="$PUBLIC" ASCIIDOC_EXTRA='-a stalenotes' \ + install-webdoc && + mv Documentation/saved-git-html Documentation/git.html else echo "* No public html at $PUBLIC" fi || exit $? -cd ../doc-htmlpages && - (git add . || echo no new files -- not a big deal) && - if git commit -a -m "Autogenerated HTML docs for $NID" - then - git-send-pack "$MASTERREPO" master:refs/heads/html || { - echo "* HTML failure" - exit 1 - } - else - echo "* No changes in html docs" - fi - -cd ../Documentation && -make \ - man1="$DOCREPO/doc-manpages/man1" \ - man7="$DOCREPO/doc-manpages/man7" \ - man1dir="$DOCREPO/doc-manpages/man1" \ - man7dir="$DOCREPO/doc-manpages/man7" \ - install >../:man.log 2>&1 && - -cd ../doc-manpages && - (git add . || echo no new files -- not a big deal) && - if git commit -a -m "Autogenerated man pages for $NID" - then - git-send-pack "$MASTERREPO" master:refs/heads/man || { - echo "* man failure" - exit 1 - } - else - echo "* No changes in manual pages" - fi - From a825af06a67d1ef9e196e007c0728bdb9f9e8a98 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Mar 2007 02:15:44 -0700 Subject: [PATCH 0205/2612] dodoc updates (minor fix for DOCREPO=.) --- dodoc.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dodoc.sh b/dodoc.sh index ca9893ae2edc13..dc36de5f4623e3 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -35,6 +35,8 @@ unset GIT_DIR test "$DOCREPO" != "" && cd "$DOCREPO" || exit $? +DOCREPO=`pwd` + tmp=`pwd`/.doctmp-$$ trap 'rm -f "$tmp".*' 0 From ee86a68e9cfa0d2c66b15c6d7db75890a49f9f4c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Mar 2007 02:16:54 -0700 Subject: [PATCH 0206/2612] Meta/DoKernelOrg: make sure rebuilt distribution material is re-linked to the target directory. --- DoKernelOrg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 216621adb126ff..0b35864216960c 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -78,9 +78,9 @@ maint | master) esac exit $status ;; *) - ln git-$V.tar.gz $G/. && + ln -f git-$V.tar.gz $G/. && make dist-doc >>./:all.log 2>&1 && - ln git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. + ln -f git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. ;; esac >>./:all.log 2>&1 && case "$NO_RPM_PLEASE" in @@ -92,10 +92,10 @@ maint | master) for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm do test -f "$rr" || continue - ln "$rr" $G/RPMS/$a/. + ln -f "$rr" $G/RPMS/$a/. done done && - ln $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/RPMS/SRPMS/. && + ln -f $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/RPMS/SRPMS/. && { # I do not know how it exits, and I do not care much. for a in $narch From 7c1fe01f0eb61688b0f861fc6eafeeb3d03428ae Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Mar 2007 23:23:54 -0700 Subject: [PATCH 0207/2612] Meta/Announce: allow to Announce even a bit older 'master' --- Announce | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Announce b/Announce index 42bf5824e9a484..24d1e276bc72b7 100755 --- a/Announce +++ b/Announce @@ -3,8 +3,9 @@ # branch=${1?branch} previous=${2?previous} +commit=${3-"$1"} -relname=$(git describe "$branch") && +relname=$(git describe "$commit") && vername=$(expr "$relname" : 'v\(.*\)') || exit $? git rev-parse --verify "$previous" >/dev/null || exit $? From c192899ebc9cafbc46b46446018101c6c06e212f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 27 Mar 2007 15:26:35 -0700 Subject: [PATCH 0208/2612] Meta/topic: allow more than two letters of topic hierarchy name --- git-topic.perl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-topic.perl b/git-topic.perl index 4a89e24acd707d..40e16d3475d044 100755 --- a/git-topic.perl +++ b/git-topic.perl @@ -6,7 +6,7 @@ use strict; use Getopt::Long; -my $topic_pattern = '??/*'; +my $topic_pattern = '??*/*'; my $base = 'next'; my @stage = qw(next pu); my @mark = ('.', '?', '-', '+'); From 89822eec3bbe1d64c3f446ab947e1e774c876284 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 28 Mar 2007 14:14:37 -0700 Subject: [PATCH 0209/2612] Meta/dodoc.sh: do not lose index.html --- dodoc.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/dodoc.sh b/dodoc.sh index dc36de5f4623e3..e4a70a11b9be85 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -69,11 +69,11 @@ do rm -fr doc-$type-inst done -make >../:html.log 2>&1 \ +make >./:html.log 2>&1 \ -C Documentation -j 2 \ WEBDOC_DEST="$DOCREPO/doc-html-inst" install-webdoc || exit -make >../:man.log 2>&1 \ +make >./:man.log 2>&1 \ -C Documentation -j 2 \ man1="$DOCREPO/doc-man-inst/man1" \ man7="$DOCREPO/doc-man-inst/man7" \ @@ -102,7 +102,19 @@ do ( cd doc-${type}pages - if git commit -a -m "Autogenerated docs for $NID" + case "$type" in + html) + TYPE='HTML docs' + rm -f index.html + ln -sf git.html index.html + git add index.html + ;; + man) + TYPE='manpages' + ;; + esac + + if git commit -a -m "Autogenerated $TYPE for $NID" then git send-pack "$MASTERREPO" master:refs/heads/$type else @@ -115,7 +127,7 @@ if test -d $PUBLIC then # This is iffy... mv Documentation/git.html Documentation/saved-git-html - make >>../:html.log 2>&1 \ + make >>./:html.log 2>&1 \ -C Documentation \ WEBDOC_DEST="$PUBLIC" ASCIIDOC_EXTRA='-a stalenotes' \ install-webdoc && From 4953c5961c909aa25c8dcae0793419ec2b64735d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 3 Apr 2007 01:07:09 -0700 Subject: [PATCH 0210/2612] Meta/V: highlight stale branch --- V | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/V b/V index 9c871bfd111b6d..890fe7fa59f19b 100755 --- a/V +++ b/V @@ -1,5 +1,16 @@ #!/bin/sh + for v in maint master next pu do - echo "$v $(git-describe $v) $($HOME/git-$v/bin/git version)" + installed=$($HOME/git-$v/bin/git version) + version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') + version=$(git rev-parse --verify "$version") + revision=$(git show-ref -s --verify "refs/heads/$v") + if test "z$version" = "z$revision" + then + in= out= installed= + else + in="" out="" installed=" $installed" + fi + echo "$in$v$out $(git-describe $v)$installed" done From da437b70877f1030854fbc80f06c9a9b78142756 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 3 Apr 2007 01:07:57 -0700 Subject: [PATCH 0211/2612] Meta/Make: allow building from a detached HEAD --- Make | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Make b/Make index 390fd12bca18c8..dffe148cf5f9cf 100755 --- a/Make +++ b/Make @@ -13,8 +13,9 @@ export PATH LANG LC_CTYPE #GIT_SVN_NO_LIB=1 #export GIT_SVN_NO_LIB -head=`git symbolic-ref HEAD` && -branch=`expr "$head" : 'refs/heads/\(.*\)'` && +head=`git symbolic-ref HEAD 2>/dev/null` && +branch=`expr "$head" : 'refs/heads/\(.*\)'` || branch=detached + case "$branch" in next | maint | master | pu) d="prefix=$HOME/git-$branch" ;; From 3b798f2f56b18ea939c458d015d97563597adb05 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 3 Apr 2007 01:08:20 -0700 Subject: [PATCH 0212/2612] Meta/Doit: avoid rebuilding already up-to-date branches. --- Doit | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/Doit b/Doit index aef3b4bee12995..6561fef6a88387 100755 --- a/Doit +++ b/Doit @@ -17,17 +17,27 @@ Meta/Make clean >/dev/null 2>&1 nstall=install for branch in $branches do - if git rev-parse --verify refs/heads/$branch 2>/dev/null - then - echo "** $branch" && - git checkout $branch && - Meta/Make $M -- $J all && - Meta/Make $M -- $J $nstall && - Meta/Make $M -- test && - Meta/Make clean || exit $? - else + revision=$(git show-ref -s --verify "refs/heads/$branch") || { echo "** No $branch" + continue + } + + if installed=$($HOME/git-$branch/bin/git version) && + version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') && + version=$(git rev-parse --verify "$version") && + test "z$version" = "z$revision" + then + echo "* up-to-date version \"$installed\" is already installed from $branch" + continue fi + + echo "** $branch" && + git checkout $branch && + Meta/Make $M -- $J all && + Meta/Make $M -- $J $nstall && + Meta/Make $M -- test && + Meta/Make clean || exit $? + done >./:all.log 2>&1 git checkout master From 15ef670d68e19bd4e1860508c8ff6a74800bc181 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 3 Apr 2007 01:53:25 -0700 Subject: [PATCH 0213/2612] Meta/V & Meta/Doit: adjust to exact release "git version" would not have g suffix for an exact release. --- Doit | 22 ++++++++++++++++------ V | 6 ++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Doit b/Doit index 6561fef6a88387..5557c82f1604b9 100755 --- a/Doit +++ b/Doit @@ -1,7 +1,12 @@ #!/bin/sh : ${J=-j2} -while case "$1" in -pedantic) M=$1 ;; *) break ;; esac +force= +while case "$1" in + -pedantic) M=$1 ;; + -force) force=$1 ;; + *) break ;; + esac do shift done @@ -17,18 +22,23 @@ Meta/Make clean >/dev/null 2>&1 nstall=install for branch in $branches do + echo >&3 "** $branch **" + revision=$(git show-ref -s --verify "refs/heads/$branch") || { echo "** No $branch" continue } - if installed=$($HOME/git-$branch/bin/git version) && - version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') && - version=$(git rev-parse --verify "$version") && + if installed=$($HOME/git-$v/bin/git version) && + { + version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') || + version=v$(expr "$installed" : 'git version \(.*\)') + } && + version=$(git rev-parse --verify "$version^0") && test "z$version" = "z$revision" then echo "* up-to-date version \"$installed\" is already installed from $branch" - continue + test -n "$force" || continue fi echo "** $branch" && @@ -38,7 +48,7 @@ do Meta/Make $M -- test && Meta/Make clean || exit $? -done >./:all.log 2>&1 +done >./:all.log 3>&2 2>&1 git checkout master diff --git a/V b/V index 890fe7fa59f19b..a0c4b6d73d9590 100755 --- a/V +++ b/V @@ -3,8 +3,10 @@ for v in maint master next pu do installed=$($HOME/git-$v/bin/git version) - version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') - version=$(git rev-parse --verify "$version") + version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') || + version=v$(expr "$installed" : 'git version \(.*\)') + + version=$(git rev-parse --verify "$version^0") revision=$(git show-ref -s --verify "refs/heads/$v") if test "z$version" = "z$revision" then From b9c9efd66c8efedcb88945857939a44c0fbf8d18 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 3 Apr 2007 17:23:15 -0700 Subject: [PATCH 0214/2612] Meta/V & Doit: what is installed could be -dirty. --- Doit | 2 +- V | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Doit b/Doit index 5557c82f1604b9..ab5b4be3c35a31 100755 --- a/Doit +++ b/Doit @@ -34,7 +34,7 @@ do version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') || version=v$(expr "$installed" : 'git version \(.*\)') } && - version=$(git rev-parse --verify "$version^0") && + version=$(git rev-parse --verify "$version^0" 2>/dev/null) && test "z$version" = "z$revision" then echo "* up-to-date version \"$installed\" is already installed from $branch" diff --git a/V b/V index a0c4b6d73d9590..5386aee106e6c5 100755 --- a/V +++ b/V @@ -6,7 +6,7 @@ do version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') || version=v$(expr "$installed" : 'git version \(.*\)') - version=$(git rev-parse --verify "$version^0") + version=$(git rev-parse --verify "$version^0" 2>/dev/null) revision=$(git show-ref -s --verify "refs/heads/$v") if test "z$version" = "z$revision" then From fec598740d1f83192c2b5987d30650992ac68e28 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 3 Apr 2007 21:41:33 -0700 Subject: [PATCH 0215/2612] V & Doit: be careful with differences between branch and revision. --- Doit | 2 +- V | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Doit b/Doit index ab5b4be3c35a31..1f8ea9c0864e79 100755 --- a/Doit +++ b/Doit @@ -29,7 +29,7 @@ do continue } - if installed=$($HOME/git-$v/bin/git version) && + if installed=$($HOME/git-$branch/bin/git version) && { version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') || version=v$(expr "$installed" : 'git version \(.*\)') diff --git a/V b/V index 5386aee106e6c5..d23bc59f050f41 100755 --- a/V +++ b/V @@ -14,5 +14,5 @@ do else in="" out="" installed=" $installed" fi - echo "$in$v$out $(git-describe $v)$installed" + echo "$in$v$out $(git-describe refs/heads/$v)$installed" done From ae397f597bfaf4e8beb9b56d533e54090bfeea92 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 4 Apr 2007 11:25:21 -0700 Subject: [PATCH 0216/2612] MaintNotes 2007-02-16 edition --- MaintNotes | 212 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 MaintNotes diff --git a/MaintNotes b/MaintNotes new file mode 100644 index 00000000000000..687e0aa4cba3f3 --- /dev/null +++ b/MaintNotes @@ -0,0 +1,212 @@ +It has been a while since I sent this message out the last time, +so it may be a good time to send it with updates again. There +seem to be some new people on the git list, especially now the +big release is out. + +This message talks about how git.git is managed, and how you can +work with it. + + +* IRC and Mailing list + +Many active members of development community hang around on #git +IRC channel. Its log is available at: + + http://colabti.de/irclogger/irclogger_logs/git + +[jc: Does anybody know a shortcut for "Today's" page on this + site? It irritates me having to click the latest link on this + page to get to the latest.] + + +The development however is primarily done on this mailing list +you are reading right now. If you have patches, please send +them to the list, following Documentation/SubmittingPatches. + +I usually read all patches posted to the list, and follow almost +all the discussions on the list, unless the topic is about an +obscure corner that I do not personally use. But I am obviously +not perfect. If you sent a patch that you did not hear from +anybody for three days, that is a very good indication that it +was dropped on the floor --- please do not hesitate to remind +me. + +The list archive is available at a few public sites as well: + + http://marc.theaimsgroup.com/?l=git + http://news.gmane.org/gmane.comp.version-control.git + +and some people seem to prefer to read it over NNTP: + + nntp://news.gmane.org/gmane.comp.version-control.git + + +* Repositories, branches and documentation. + +My public git.git repository is at: + + git://git.kernel.org/pub/scm/git/git.git/ + +This is mirrored at Pasky's site at + + git://repo.or.cz/git.git/ + +but the first has a few hours mirroring delay after I publish +updates, and the latter, being a mirror of former, lags behind +it further. Immediately after I publish to the primary +repository at kernel.org, I also push into an alternate here: + + git://repo.or.cz/alt-git.git/ + +Impatient people would have better lack with the last one (but +the last repository does not have "html", "man" and "todo" +branches, described next). + + +There are three branches in git.git repository that are not +about the source tree of git: "todo", "html" and "man". The +first one was meant to contain TODO list for me, but I am not +good at maintaining such a list so it is not as often updated as +it could/should be. It also contains some helper scripts I use +to maintain git. + +The "html" and "man" are autogenerated documentation from the +tip of the "master" branch; the tip of "html" is extracted to be +visible at kernel.org at: + + http://www.kernel.org/pub/software/scm/git/docs/ + +Starting from 1.5.0, the top-level documentation page has links +to documentation of older releases. + +The script to maintain these two documentation branches are +found in "todo" branch as dodoc.sh, if you are interested. It +is a good demonstration of how to use an update hook to automate +a task. + +There are four branches in git.git repository that track the +source tree of git: "master", "maint", "next", and "pu". + +The "master" branch is meant to contain what are reasonably +tested and ready to be used in a production setting. There +could occasionally be minor breakages or brown paper bag bugs +but they are not expected to be anything major. Every now and +then, a "feature release" is cut from the tip of this branch and +they typically are named with three dotted decimal digits. The +last such release was v1.5.0 done on Feb 14th this year. The +codename for that release is not "snog". + +Whenever a feature release is made, "maint" branch is forked off +from "master" at that point. Obvious, safe and urgent fixes +after a feature release are applied to this branch and +maintenance releases are cut from it. The maintenance releases +are typically named with four dotted decimal, named after the +feature release they are updates to; the last such release was +v1.4.4.4, and I am expecting to cut v1.5.0.1 sometime soon. +Usually new development will never go to this branch. This +branch is also merged into "master" to propagate the fixes +forward. + +A trivial and safe enhancement goes directly on top of "master". +A new development, either initiated by myself or more often by +somebody who found his or her own itch to scratch, does not +usually happen on "master", however. Instead, it is forked into +a separate topic branch from the tip of "master", and first +tested in isolation; I may make minimum fixups at this point. +Usually there are a handful such topic branches that are running +ahead of "master" in git.git repository. I do not publish the +tip of these branches in my public repository, however, partly +to keep the number of branches that downstream developers need +to worry about and primarily because I am lazy. + +I judge the quality of topic branches, taking advices from the +mailing list discussions. Some of them start out as "good idea +but obviously is broken in some areas (e.g. breaks the existing +testsuite)" and then with some more work (either by the original +contributor or help from other people on the list) becomes "more +or less done and can now be tested by wider audience". Luckily, +most of them start out in the latter, better shape. + +The "next" branch is to merge and test topic branches in the +latter category. In general it should always contain the tip of +"master". They might not be quite production ready, but are +expected to work more or less without major breakage. I usually +use "next" version of git for my own work, so it cannot be +_that_ broken to prevent me from pushing the changes out. +The "next" branch is where new and exciting things take place. + +The above three branches, "master", "maint" and "next" are never +rewound, so you should be able to safely track them (that means +the topics that have been merged into "next" are not rebased). + +The "pu" (proposed updates) branch bundles all the remainder of +topic branches. The "pu" branch, and topic branches that are +only in "pu", are subject to rebasing in general. + +When a topic that was in "pu" proves to be in testable shape, it +graduates to "next". I do this with: + + git checkout next + git merge that-topic-branch + +Sometimes, an idea that looked promising turns out to be not so +hot and the topic can be dropped from "pu" in such a case. + +A topic that is in "next" is expected to be tweaked and fixed to +perfection before it is merged to "master". However, being in +"next" is not a guarantee to appear in the next release (being +in "master" is such a guarantee, unless it is later found +seriously broken and reverted), or even in any future release. +There even were cases that topics needed a few reverting before +graduating to "master", or a topic that already was in "next" +were reverted from "next" because fatal flaws were found in them +later. + +Starting from v1.5.0, "master" and "maint" have release notes +for the next release in Documentation/RelNotes-* files, so that +I do not have to run around summarizing what happened just +before the release. + + +* Other people's trees, trusted lieutenants and credits. + +Documentation/SubmittingPatches outlines who your changes should +be sent to. As described in contrib/README, I would delegate +fixes and enhancements in contrib/ area to primary contributors +of them. + +Although the following are included in git.git repository, they +have their own authoritative repository and maintainers: + + git-gui/ -- this subdirectory comes from Shawn Pearce's git-gui + project, which is found at: + + git://repo.or.cz/git-gui.git + + gitk -- this file is maintained by Paul Packerras, at: + + git://git.kernel.org/pub/scm/gitk/gitk.git + +I would like to thank everybody who helped to raise git into the +current shape. Especially I would like to thank the git list +regulars whose help I have relied on and expect to continue +relying on heavily: + + - Linus on general design issues. + + - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, and + Rene Scharfe on general implementation issues. + + - Shawn and Nicolas Pitre on pack issues. + + - Martin Langhoff on cvsserver and cvsimport. + + - Paul Packerras on gitk. + + - Eric Wong on git-svn. + + - Jakub Narebski and Luben Tuikov on gitweb. + + - J. Bruce Fields on documentaton issues. + + From 0ee949b815802b2f76096feddf922d2aeb4feffb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 4 Apr 2007 11:26:41 -0700 Subject: [PATCH 0217/2612] MaintNotes: 2007-04-04 edition --- MaintNotes | 104 +++++++++++++++++++++++++---------------------------- 1 file changed, 48 insertions(+), 56 deletions(-) diff --git a/MaintNotes b/MaintNotes index 687e0aa4cba3f3..2fe82c85d35740 100644 --- a/MaintNotes +++ b/MaintNotes @@ -1,23 +1,13 @@ -It has been a while since I sent this message out the last time, -so it may be a good time to send it with updates again. There -seem to be some new people on the git list, especially now the -big release is out. - -This message talks about how git.git is managed, and how you can -work with it. - +Now a new feature release is out, it's time to welcome new +people to the list. This message talks about how git.git is +managed, and how you can work with it. * IRC and Mailing list Many active members of development community hang around on #git IRC channel. Its log is available at: - http://colabti.de/irclogger/irclogger_logs/git - -[jc: Does anybody know a shortcut for "Today's" page on this - site? It irritates me having to click the latest link on this - page to get to the latest.] - + http://colabti.de/irclogger/irclogger_log/git The development however is primarily done on this mailing list you are reading right now. If you have patches, please send @@ -33,36 +23,35 @@ me. The list archive is available at a few public sites as well: - http://marc.theaimsgroup.com/?l=git - http://news.gmane.org/gmane.comp.version-control.git + http://marc.theaimsgroup.com/?l=git + http://news.gmane.org/gmane.comp.version-control.git and some people seem to prefer to read it over NNTP: - nntp://news.gmane.org/gmane.comp.version-control.git + nntp://news.gmane.org/gmane.comp.version-control.git * Repositories, branches and documentation. My public git.git repository is at: - git://git.kernel.org/pub/scm/git/git.git/ + git://git.kernel.org/pub/scm/git/git.git/ This is mirrored at Pasky's site at - git://repo.or.cz/git.git/ + git://repo.or.cz/git.git/ but the first has a few hours mirroring delay after I publish updates, and the latter, being a mirror of former, lags behind it further. Immediately after I publish to the primary repository at kernel.org, I also push into an alternate here: - git://repo.or.cz/alt-git.git/ + git://repo.or.cz/alt-git.git/ -Impatient people would have better lack with the last one (but +Impatient people would have better luck with the last one (but the last repository does not have "html", "man" and "todo" branches, described next). - There are three branches in git.git repository that are not about the source tree of git: "todo", "html" and "man". The first one was meant to contain TODO list for me, but I am not @@ -74,10 +63,10 @@ The "html" and "man" are autogenerated documentation from the tip of the "master" branch; the tip of "html" is extracted to be visible at kernel.org at: - http://www.kernel.org/pub/software/scm/git/docs/ + http://www.kernel.org/pub/software/scm/git/docs/ -Starting from 1.5.0, the top-level documentation page has links -to documentation of older releases. +The above URL is the top-level documentation page, and it has +links to documentation of older releases. The script to maintain these two documentation branches are found in "todo" branch as dodoc.sh, if you are interested. It @@ -87,37 +76,34 @@ a task. There are four branches in git.git repository that track the source tree of git: "master", "maint", "next", and "pu". -The "master" branch is meant to contain what are reasonably +The "master" branch is meant to contain what are very well tested and ready to be used in a production setting. There could occasionally be minor breakages or brown paper bag bugs but they are not expected to be anything major. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was v1.5.0 done on Feb 14th this year. The -codename for that release is not "snog". +last such release was v1.5.1 done on April 4th this year. Whenever a feature release is made, "maint" branch is forked off from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases -are typically named with four dotted decimal, named after the -feature release they are updates to; the last such release was -v1.4.4.4, and I am expecting to cut v1.5.0.1 sometime soon. -Usually new development will never go to this branch. This -branch is also merged into "master" to propagate the fixes -forward. +are named with four dotted decimal, named after the feature +release they are updates to; the last such release was v1.5.0.7. +New features never goes to this branch. This branch is also +merged into "master" to propagate the fixes forward. A trivial and safe enhancement goes directly on top of "master". A new development, either initiated by myself or more often by somebody who found his or her own itch to scratch, does not -usually happen on "master", however. Instead, it is forked into -a separate topic branch from the tip of "master", and first +usually happen on "master", however. Instead, a separate topic +branch is forked from the tip of "master", and it first is tested in isolation; I may make minimum fixups at this point. Usually there are a handful such topic branches that are running ahead of "master" in git.git repository. I do not publish the tip of these branches in my public repository, however, partly to keep the number of branches that downstream developers need -to worry about and primarily because I am lazy. +to worry about low, and primarily because I am lazy. I judge the quality of topic branches, taking advices from the mailing list discussions. Some of them start out as "good idea @@ -128,16 +114,18 @@ or less done and can now be tested by wider audience". Luckily, most of them start out in the latter, better shape. The "next" branch is to merge and test topic branches in the -latter category. In general it should always contain the tip of -"master". They might not be quite production ready, but are -expected to work more or less without major breakage. I usually -use "next" version of git for my own work, so it cannot be -_that_ broken to prevent me from pushing the changes out. +latter category. In general, the branch always contains the tip +of "master". It might not be quite rock-solid production ready, +but is expected to work more or less without major breakage. I +usually use "next" version of git for my own work, so it cannot +be _that_ broken to prevent me from pushing the changes out. The "next" branch is where new and exciting things take place. The above three branches, "master", "maint" and "next" are never -rewound, so you should be able to safely track them (that means -the topics that have been merged into "next" are not rebased). +rewound, so you should be able to safely track them (this +automatically means the topics that have been merged into "next" +are not rebased, and you can find the tip of topic branches you +are interested in out of "git log next" output). The "pu" (proposed updates) branch bundles all the remainder of topic branches. The "pu" branch, and topic branches that are @@ -146,21 +134,27 @@ only in "pu", are subject to rebasing in general. When a topic that was in "pu" proves to be in testable shape, it graduates to "next". I do this with: - git checkout next + git checkout next git merge that-topic-branch Sometimes, an idea that looked promising turns out to be not so hot and the topic can be dropped from "pu" in such a case. A topic that is in "next" is expected to be tweaked and fixed to -perfection before it is merged to "master". However, being in -"next" is not a guarantee to appear in the next release (being -in "master" is such a guarantee, unless it is later found -seriously broken and reverted), or even in any future release. -There even were cases that topics needed a few reverting before -graduating to "master", or a topic that already was in "next" -were reverted from "next" because fatal flaws were found in them -later. +perfection before it is merged to "master". Similarly to the +above I do it with this: + + git checkout master + git merge that-topic-branch + git branch -d that-topic-branch + +However, being in "next" is not a guarantee to appear in the +next release (being in "master" is such a guarantee, unless it +is later found seriously broken and reverted), or even in any +future release. There even were cases that topics needed a few +reverting before graduating to "master", or a topic that already +was in "next" were reverted from "next" because fatal flaws were +found in them later. Starting from v1.5.0, "master" and "maint" have release notes for the next release in Documentation/RelNotes-* files, so that @@ -185,7 +179,7 @@ have their own authoritative repository and maintainers: gitk -- this file is maintained by Paul Packerras, at: - git://git.kernel.org/pub/scm/gitk/gitk.git + git://git.kernel.org/pub/scm/gitk/gitk.git I would like to thank everybody who helped to raise git into the current shape. Especially I would like to thank the git list @@ -208,5 +202,3 @@ relying on heavily: - Jakub Narebski and Luben Tuikov on gitweb. - J. Bruce Fields on documentaton issues. - - From 18dbe04b1dcdd2f20036e13e906666b35d5402b7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 4 Apr 2007 16:07:32 -0700 Subject: [PATCH 0218/2612] MaintNotes: typofix --- MaintNotes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MaintNotes b/MaintNotes index 2fe82c85d35740..f4ed80a395f2be 100644 --- a/MaintNotes +++ b/MaintNotes @@ -177,7 +177,7 @@ have their own authoritative repository and maintainers: git://repo.or.cz/git-gui.git - gitk -- this file is maintained by Paul Packerras, at: + gitk -- this file is maintained by Paul Mackerras, at: git://git.kernel.org/pub/scm/gitk/gitk.git @@ -195,7 +195,7 @@ relying on heavily: - Martin Langhoff on cvsserver and cvsimport. - - Paul Packerras on gitk. + - Paul Mackerras on gitk. - Eric Wong on git-svn. From 15015577e38e3a96fbd61fb16acf81cb1547d801 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 5 Apr 2007 17:47:04 -0700 Subject: [PATCH 0219/2612] Start preparing for the next cycle. --- prep-1.5.1.1.txt | 56 +++++++++++++++++++++++++++++++++++++++++ prep-1.5.2.txt | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 prep-1.5.1.1.txt create mode 100644 prep-1.5.2.txt diff --git a/prep-1.5.1.1.txt b/prep-1.5.1.1.txt new file mode 100644 index 00000000000000..b7c97af0b17194 --- /dev/null +++ b/prep-1.5.1.1.txt @@ -0,0 +1,56 @@ +diff --git a/Documentation/RelNotes-1.5.1.1.txt b/Documentation/RelNotes-1.5.1.1.txt +new file mode 100644 +index 0000000..cc22e8d +--- /dev/null ++++ b/Documentation/RelNotes-1.5.1.1.txt +@@ -0,0 +1,41 @@ ++GIT v1.5.1.1 Release Notes (draft) ++========================== ++ ++Fixes since v1.5.1 ++------------------ ++ ++* Documentation updates ++ ++ - The --left-right option of rev-list and friends is documented. ++ ++* Bugfixes ++ ++ - "git archive" to download from remote site should not ++ require you to be in a git repository, but it incorrectly ++ did. ++ ++ - "git apply" ignored -p for "diff --git" formatted ++ patches. ++ ++ - "git rerere" recorded a conflict that had one side empty ++ (the other side adds) incorrectly; this made merging in the ++ other direction fail to use previously recorded resolution. ++ ++ - t4200 test was broken where "wc -l" pads its output with ++ spaces. ++ ++ - "git branch -m old new" to rename branch did not work ++ without a configuration file in ".git/config". ++ ++ - The sample hook for notification e-mail was misnamed. ++ ++ - gitweb did not show type-changing patch correctly in the ++ blobdiff view. ++ ++* Performance Tweaks ++ ++-- ++exec >/var/tmp/1 ++O=v1.5.1-11-gb5da246 ++echo O=`git describe refs/heads/maint` ++git shortlog --no-merges $O..refs/heads/maint +diff --git a/RelNotes b/RelNotes +index d5e055d..59e7391 120000 +--- a/RelNotes ++++ b/RelNotes +@@ -1 +1 @@ +-Documentation/RelNotes-1.5.1.txt +\ No newline at end of file ++Documentation/RelNotes-1.5.1.1.txt +\ No newline at end of file diff --git a/prep-1.5.2.txt b/prep-1.5.2.txt new file mode 100644 index 00000000000000..810abe69840b49 --- /dev/null +++ b/prep-1.5.2.txt @@ -0,0 +1,65 @@ +diff --git a/Documentation/RelNotes-1.5.2.txt b/Documentation/RelNotes-1.5.2.txt +new file mode 100644 +index 0000000..cdac811 +--- /dev/null ++++ b/Documentation/RelNotes-1.5.2.txt +@@ -0,0 +1,50 @@ ++GIT v1.5.2 Release Notes ++======================== ++ ++Updates since v1.5.1 ++-------------------- ++ ++* New commands and options. ++ ++* Updated behavior of existing commands. ++ ++ - "git diff --stat" shows size of preimage and postimage blobs ++ for binary contents. Earlier it only said "Bin". ++ ++ - "git lost-found" shows stuff that are unreachable except ++ from reflogs. ++ ++* Builds ++ ++ - git-p4import has never been installed; now there is an ++ installation option to do so. ++ ++ - gitk and git-gui can be configured out. ++ ++ - Generated documentation pages automatically get version ++ information from GIT_VERSION ++ ++* Performance Tweaks ++ ++ - optimized "git-rev-list --bisect" (hence "git-bisect"). ++ ++ - optimized "git-add $path" in a large directory, most of ++ whose contents are ignored. ++ ++ ++Fixes since v1.5.1 ++------------------ ++ ++These are all in v1.5.1.x series. ++ ++* Documentation updates ++ ++* Bugfixes ++ ++* Performance Tweaks ++ ++-- ++exec >/var/tmp/1 ++O=v1.5.1-53-g77e6f5b ++echo O=`git describe refs/heads/master` ++git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint +diff --git a/RelNotes b/RelNotes +index d5e055d..c543b1d 120000 +--- a/RelNotes ++++ b/RelNotes +@@ -1 +1 @@ +-Documentation/RelNotes-1.5.1.txt +\ No newline at end of file ++Documentation/RelNotes-1.5.2.txt +\ No newline at end of file From 944e3f19f4dfe9a8e89d5d4739e8944ef44d0564 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 7 Apr 2007 03:02:43 -0700 Subject: [PATCH 0220/2612] Doit: test before install --- Doit | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Doit b/Doit index 1f8ea9c0864e79..bb1b0f32b37eac 100755 --- a/Doit +++ b/Doit @@ -19,7 +19,6 @@ Meta/Make clean >/dev/null 2>&1 : ${branches='next master maint pu'} -nstall=install for branch in $branches do echo >&3 "** $branch **" @@ -44,8 +43,8 @@ do echo "** $branch" && git checkout $branch && Meta/Make $M -- $J all && - Meta/Make $M -- $J $nstall && Meta/Make $M -- test && + Meta/Make $M -- install && Meta/Make clean || exit $? done >./:all.log 3>&2 2>&1 From 1eef2f93757a30cb2dde82708e46487531b9f4d7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 9 Apr 2007 00:33:52 -0700 Subject: [PATCH 0221/2612] Prep 1.5.1.1 --- prep-1.5.1.1.txt | 76 ++++++++++++++---------------------------------- 1 file changed, 22 insertions(+), 54 deletions(-) diff --git a/prep-1.5.1.1.txt b/prep-1.5.1.1.txt index b7c97af0b17194..5009eb07cdd159 100644 --- a/prep-1.5.1.1.txt +++ b/prep-1.5.1.1.txt @@ -1,56 +1,24 @@ diff --git a/Documentation/RelNotes-1.5.1.1.txt b/Documentation/RelNotes-1.5.1.1.txt -new file mode 100644 -index 0000000..cc22e8d ---- /dev/null +index b48b4bc..f8c29d5 100644 +--- a/Documentation/RelNotes-1.5.1.1.txt +++ b/Documentation/RelNotes-1.5.1.1.txt -@@ -0,0 +1,41 @@ -+GIT v1.5.1.1 Release Notes (draft) -+========================== -+ -+Fixes since v1.5.1 -+------------------ -+ -+* Documentation updates -+ -+ - The --left-right option of rev-list and friends is documented. -+ -+* Bugfixes -+ -+ - "git archive" to download from remote site should not -+ require you to be in a git repository, but it incorrectly -+ did. -+ -+ - "git apply" ignored -p for "diff --git" formatted -+ patches. -+ -+ - "git rerere" recorded a conflict that had one side empty -+ (the other side adds) incorrectly; this made merging in the -+ other direction fail to use previously recorded resolution. -+ -+ - t4200 test was broken where "wc -l" pads its output with -+ spaces. -+ -+ - "git branch -m old new" to rename branch did not work -+ without a configuration file in ".git/config". -+ -+ - The sample hook for notification e-mail was misnamed. -+ -+ - gitweb did not show type-changing patch correctly in the -+ blobdiff view. -+ -+* Performance Tweaks -+ -+-- -+exec >/var/tmp/1 -+O=v1.5.1-11-gb5da246 -+echo O=`git describe refs/heads/maint` -+git shortlog --no-merges $O..refs/heads/maint -diff --git a/RelNotes b/RelNotes -index d5e055d..59e7391 120000 ---- a/RelNotes -+++ b/RelNotes -@@ -1 +1 @@ --Documentation/RelNotes-1.5.1.txt -\ No newline at end of file -+Documentation/RelNotes-1.5.1.1.txt -\ No newline at end of file +@@ -37,10 +37,18 @@ Fixes since v1.5.1 + - gitweb did not show type-changing patch correctly in the + blobdiff view. + ++ - git-svn did not error out with incorrect command line options. ++ ++ - git-svn fell into an infinite loop when insanely long commit ++ message was found. ++ ++ - git-svn dcommit and rebase was confused by patches that were ++ merged from another branch that is managed by git-svn. ++ + * Performance Tweaks + + -- + exec >/var/tmp/1 +-O=v1.5.1-26-ge94a4f6 ++O=v1.5.1-31-g24c64d6 + echo O=`git describe refs/heads/maint` + git shortlog --no-merges $O..refs/heads/maint From 3edc212b4d8368a899f63b8f82496cb39e15584a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 11 Apr 2007 18:07:09 -0700 Subject: [PATCH 0222/2612] 1.5.1.1 --- prep-1.5.1.1.txt | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 prep-1.5.1.1.txt diff --git a/prep-1.5.1.1.txt b/prep-1.5.1.1.txt deleted file mode 100644 index 5009eb07cdd159..00000000000000 --- a/prep-1.5.1.1.txt +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/Documentation/RelNotes-1.5.1.1.txt b/Documentation/RelNotes-1.5.1.1.txt -index b48b4bc..f8c29d5 100644 ---- a/Documentation/RelNotes-1.5.1.1.txt -+++ b/Documentation/RelNotes-1.5.1.1.txt -@@ -37,10 +37,18 @@ Fixes since v1.5.1 - - gitweb did not show type-changing patch correctly in the - blobdiff view. - -+ - git-svn did not error out with incorrect command line options. -+ -+ - git-svn fell into an infinite loop when insanely long commit -+ message was found. -+ -+ - git-svn dcommit and rebase was confused by patches that were -+ merged from another branch that is managed by git-svn. -+ - * Performance Tweaks - - -- - exec >/var/tmp/1 --O=v1.5.1-26-ge94a4f6 -+O=v1.5.1-31-g24c64d6 - echo O=`git describe refs/heads/maint` - git shortlog --no-merges $O..refs/heads/maint From 0825bf820299e123191539dc2be55a41182a2700 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 18 Apr 2007 02:41:33 -0700 Subject: [PATCH 0223/2612] Meta/V: make the version string usable for cut & paste --- V | 1 + 1 file changed, 1 insertion(+) diff --git a/V b/V index d23bc59f050f41..8c4a6d40e9bf82 100755 --- a/V +++ b/V @@ -12,6 +12,7 @@ do then in= out= installed= else + installed=$(git describe $version) in="" out="" installed=" $installed" fi echo "$in$v$out $(git-describe refs/heads/$v)$installed" From 626254d493136954c1d6cab4fa97f23e592423e3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 19 Apr 2007 17:58:34 -0700 Subject: [PATCH 0224/2612] dodoc.sh: support manual section 5 --- dodoc.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dodoc.sh b/dodoc.sh index e4a70a11b9be85..945c05d2b6102a 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -76,8 +76,10 @@ make >./:html.log 2>&1 \ make >./:man.log 2>&1 \ -C Documentation -j 2 \ man1="$DOCREPO/doc-man-inst/man1" \ + man5="$DOCREPO/doc-man-inst/man5" \ man7="$DOCREPO/doc-man-inst/man7" \ man1dir="$DOCREPO/doc-man-inst/man1" \ + man5dir="$DOCREPO/doc-man-inst/man5" \ man7dir="$DOCREPO/doc-man-inst/man7" install || exit for type in html man From 3d575ef77004fb833bfd73384801c5f5c07c352e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 23 Apr 2007 23:10:15 -0700 Subject: [PATCH 0225/2612] dodoc - create leading directory when installing --- dodoc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dodoc.sh b/dodoc.sh index 945c05d2b6102a..78cfad32409d60 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -90,7 +90,7 @@ do it=$(expr "$path" : doc-$type-inst/'\(.*\)') || continue t="doc-${type}pages/$it" test -f "$t" && diff -q "$path" "$t" && continue - + mkdir -p "$(dirname "$t")" && echo ": $t" && rm -f "$t" && ln "$path" "$t" || exit ( cd doc-${type}pages && git add "$it" ) done || exit From b88121c8020bb4abd1fd6471152973c2a6673939 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 23 Apr 2007 23:11:08 -0700 Subject: [PATCH 0226/2612] Meta/Make: specify ETC_GITCONFIG explicitly Josh wants to change the default behaviour. Better be prepared not to be affected by it. --- Make | 1 + prep-1.5.2.txt | 65 -------------------------------------------------- 2 files changed, 1 insertion(+), 65 deletions(-) delete mode 100644 prep-1.5.2.txt diff --git a/Make b/Make index dffe148cf5f9cf..8212813741abd5 100755 --- a/Make +++ b/Make @@ -57,5 +57,6 @@ done make $d \ GITWEB_CONFIG=$G \ PYTHON_PATH=/usr/bin/python2.4 \ + ETC_GITCONFIG=$d/etc/gitconfig \ CFLAGS="$O -Wall -Wdeclaration-after-statement -g" \ "$@" diff --git a/prep-1.5.2.txt b/prep-1.5.2.txt deleted file mode 100644 index 810abe69840b49..00000000000000 --- a/prep-1.5.2.txt +++ /dev/null @@ -1,65 +0,0 @@ -diff --git a/Documentation/RelNotes-1.5.2.txt b/Documentation/RelNotes-1.5.2.txt -new file mode 100644 -index 0000000..cdac811 ---- /dev/null -+++ b/Documentation/RelNotes-1.5.2.txt -@@ -0,0 +1,50 @@ -+GIT v1.5.2 Release Notes -+======================== -+ -+Updates since v1.5.1 -+-------------------- -+ -+* New commands and options. -+ -+* Updated behavior of existing commands. -+ -+ - "git diff --stat" shows size of preimage and postimage blobs -+ for binary contents. Earlier it only said "Bin". -+ -+ - "git lost-found" shows stuff that are unreachable except -+ from reflogs. -+ -+* Builds -+ -+ - git-p4import has never been installed; now there is an -+ installation option to do so. -+ -+ - gitk and git-gui can be configured out. -+ -+ - Generated documentation pages automatically get version -+ information from GIT_VERSION -+ -+* Performance Tweaks -+ -+ - optimized "git-rev-list --bisect" (hence "git-bisect"). -+ -+ - optimized "git-add $path" in a large directory, most of -+ whose contents are ignored. -+ -+ -+Fixes since v1.5.1 -+------------------ -+ -+These are all in v1.5.1.x series. -+ -+* Documentation updates -+ -+* Bugfixes -+ -+* Performance Tweaks -+ -+-- -+exec >/var/tmp/1 -+O=v1.5.1-53-g77e6f5b -+echo O=`git describe refs/heads/master` -+git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint -diff --git a/RelNotes b/RelNotes -index d5e055d..c543b1d 120000 ---- a/RelNotes -+++ b/RelNotes -@@ -1 +1 @@ --Documentation/RelNotes-1.5.1.txt -\ No newline at end of file -+Documentation/RelNotes-1.5.2.txt -\ No newline at end of file From 8b6010734f6501fdf6313f43e051128db07b9926 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 24 Apr 2007 13:04:34 -0700 Subject: [PATCH 0227/2612] typofix MaintNotes --- MaintNotes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintNotes b/MaintNotes index f4ed80a395f2be..3ef4ddcddfa803 100644 --- a/MaintNotes +++ b/MaintNotes @@ -90,7 +90,7 @@ after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature release they are updates to; the last such release was v1.5.0.7. -New features never goes to this branch. This branch is also +New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. A trivial and safe enhancement goes directly on top of "master". From ed533c7ecc843190955ede5268799d276605ac8a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 24 Apr 2007 13:04:40 -0700 Subject: [PATCH 0228/2612] TODO updates --- TODO | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index ccab43208cb224..a4c6bb79da680c 100644 --- a/TODO +++ b/TODO @@ -1,18 +1,59 @@ The GIT To-Do File ================== - The latest copy of this document is found at +The latest copy of this document is found at http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO +---------------------------------------------------------------- Recent issues ------------- +* Use blame machinery to track a single file (not path) in finer + grained way. + +From: Linus Torvalds +Message-ID: + +[jc: I have a fixed-up one parked in 'pu' and also outlined what +other things I think are needed in my response: + + Message-ID: <7vwt06wqv8.fsf@assigned-by-dhcp.cox.net> +] + +* Use git.git as the first public guinea pig of subproject + +From: Junio C Hamano +Message-ID: <7vmz13z4au.fsf@assigned-by-dhcp.cox.net> + +Use git.git as the first public guinea pig of subproject stuff, +by dropping git-gui/ directory first and then binding git-gui.git +as a subproject there. This needs to wait at least until v1.5.2 +ships and gets installed at kernel.org and repo.or.cz + +* Decide what to do with 'filter' and 'ident' attribute patches. + +From: Linus Torvalds +Message-ID: + +If we were to include it, we would need to make it clear that +this is a long piece of rope and you can strangle yourself with +it unless you are careful, and clarify what is and isn't +considered to be "careful". I have parked updates in 'pu', but +I do not know they are clear enough. + +* TODO list management + +From: Daniel Barkalow +Message-ID: + Maybe abandon this and have something similar on the main branch, starting full at the beginning of the cycle and ending empty (or full of "not in next release" entries) at the release? +* git-daemon bug? + From: Franck Bui-Huu Message-ID: <450EABD0.1040102@innova-card.com> @@ -20,13 +61,15 @@ Repeated requests against git-daemon makes it stuck under --syslog [jc: does not reproduce easily for me; has anybody seen it?] +* git-mirror (reverse of git-push --all). + From: Shawn Pearce Message-ID: <20060926215745.GC8177@spearce.org> -git-mirror (reverse of git-push --all). - [jc: may want the finished version for inclusion] +* AsciiDoc 8 would break our documentation. + From: Stefan Richter Message-ID: <4523EC14.6070806@s5r6.in-berlin.de> @@ -35,6 +78,8 @@ the box. [jc: limbo?] +* Gitweb diff on merge commits + From: Linus Torvalds Subject: Re: git show and gitweb gives different result for kernel Message-ID: From dcd3d6998df396c4bdfb89cdab2fa809c76317eb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 24 Apr 2007 13:13:51 -0700 Subject: [PATCH 0229/2612] Mention repo.or.cz in TODO --- MaintNotes | 15 ++++----------- TODO | 1 + 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/MaintNotes b/MaintNotes index 3ef4ddcddfa803..9b5647e944f39a 100644 --- a/MaintNotes +++ b/MaintNotes @@ -37,20 +37,13 @@ My public git.git repository is at: git://git.kernel.org/pub/scm/git/git.git/ -This is mirrored at Pasky's site at - - git://repo.or.cz/git.git/ - -but the first has a few hours mirroring delay after I publish -updates, and the latter, being a mirror of former, lags behind -it further. Immediately after I publish to the primary -repository at kernel.org, I also push into an alternate here: +Immediately after I publish to the primary repository at kernel.org, I +also push into an alternate here: git://repo.or.cz/alt-git.git/ -Impatient people would have better luck with the last one (but -the last repository does not have "html", "man" and "todo" -branches, described next). +Impatient people would have better luck with the latter one, but it +does not have "html" and "man" branches (described below). There are three branches in git.git repository that are not about the source tree of git: "todo", "html" and "man". The diff --git a/TODO b/TODO index a4c6bb79da680c..0744c366e9c5ad 100644 --- a/TODO +++ b/TODO @@ -4,6 +4,7 @@ The GIT To-Do File The latest copy of this document is found at http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO + http://repo.or.cz/w/alt-git.git?a=blob;hb=todo;f=TODO ---------------------------------------------------------------- From a402ae1a399468bd29843ba99c844c4e8b45efa7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 24 Apr 2007 16:12:57 -0700 Subject: [PATCH 0230/2612] TODO: add unified "fetch" --- TODO | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/TODO b/TODO index 0744c366e9c5ad..dc6351acbd7e79 100644 --- a/TODO +++ b/TODO @@ -6,6 +6,9 @@ The latest copy of this document is found at http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO http://repo.or.cz/w/alt-git.git?a=blob;hb=todo;f=TODO +This is primarily meant for my personal reminder, but feel free +to pick an item from the list and work on it. + ---------------------------------------------------------------- Recent issues @@ -101,6 +104,10 @@ Technical (milder) * Maybe grok PGP signed text/plain in applymbox as well. +* "git fetch" should be able to use foreign SCM import backends + such as svnimport and cvsimport. + + Technical (trivial) ------------------- From 2bf005488609d28a78fce3354cc5bedf1963e491 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 29 Apr 2007 00:56:05 -0700 Subject: [PATCH 0231/2612] Add taboo tool --- TODO | 12 + taboo.perl | 1454 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1466 insertions(+) create mode 100755 taboo.perl diff --git a/TODO b/TODO index dc6351acbd7e79..43f7d2fc6199bf 100644 --- a/TODO +++ b/TODO @@ -14,6 +14,16 @@ to pick an item from the list and work on it. Recent issues ------------- +* Handling pushing into non-bare repository more gracefully. + +When git-push is done to a non-bare repository and updates the +branch that is currently checked out, we currently do not do +anything special. + +From: Linus Torvalds +Message-ID: + + * Use blame machinery to track a single file (not path) in finer grained way. @@ -93,6 +103,8 @@ not just diff with the first parent for a merge. [jc: Jakub is interested in it] + + Technical (milder) ------------------ diff --git a/taboo.perl b/taboo.perl new file mode 100755 index 00000000000000..2452c3f278e5b9 --- /dev/null +++ b/taboo.perl @@ -0,0 +1,1454 @@ +#!/usr/bin/perl -w +# $Id: taboo.perl,v 1.4 2007-04-01 00:24:31 junio Exp $ + +my $tmpl = ' if (%%PATTERN%%) { + print "$lineno ${_}matches %%QPATTERN%%\n"; + return; + } +'; +my $stmt = ""; +my $in_header = 1; + +while () { + if (/^\$global_taboo_body =/) { + $in_header = 0; + } + next if (/^\043/ || /^\$/ || /^END$/ || /^\s*$/); + chomp; + my $p = $_; + if ($in_header) { + $p = '/^[-\w_]*:/ && ' . $p; + } + my $q = quotemeta($p); + my $stmt1 = $tmpl; + $stmt1 =~ s|%%PATTERN%%|$p|g; + $stmt1 =~ s|%%QPATTERN%%|$q|g; + $stmt .= $stmt1; +} +close DATA; + +$stmt = 'sub check { + my ($line, $lineno) = @_; +' . $stmt . ' +} +'; +eval $stmt; +while (<>) { + check($_, $.); +} + +my $how_to_update_this_script = <<'EOF' ; + ( sed -e '/^__DATA__$/q' taboo.perl && \ + wget -q -O - http://vger.kernel.org/majordomo-taboos.txt ) \ + >taboo.perl+ + if diff -u taboo.perl taboo.perl+; \ + then \ + rm -f taboo.perl+; \ + echo >&2 No changes.; \ + else \ + mv taboo.perl+ taboo.perl; \ + chmod +x taboo.perl; \ + fi +EOF + +__DATA__ +#TABOO-START +# +# These are Majordomo's global majordomo.cf as used at +# vger.kernel.org. This is automated extract from running +# system configuration. THESE MIGHT NOT BE USEFULL IN ANY +# OTHER ENVIRONMENT, AND THIS EXTRACT IS SHOWN ONLY FOR +# YOU TO SEE, WHAT TRIGGERS BLOCKING AT VGER'S LISTS. +# +# taboo headers to catch +# +$global_taboo_headers = <<'END'; +m/From:.*MAILER-DAEMON/i +m/^Mailing-List:/i +m/^list-/i +/Friend\@public\.com/i +/\@sexyfun\.net/i +/\@safestory\.com/ +/^subject: ndn: /i +/^subject:\s*RCPT:/i +/^subject:\s*Delivery Confirmation\b/i +/^subject:\s*NON-DELIVERY of:/i +/^subject:.*Undeliverable Message\b/i +/^subject:.*Receipt Confirmation\b/i +/^subject:.*Failed mail\b/i +/^subject:.*Returned mail\b/i +/^subject:.*Linus Bus Factor\b/i +/^subject:\s*unable to deliver mail\b/i +/^subject:\s.*\baway from my mail\b/i +/^subject:\s*Autoreply/i +/#field0#/ +/\@5Business.cc/i +/subject:.*ADV:/i +/subject:.*=?ISO-2022-JP?/i +/subject:.*Snowhite and the Seven Dwarfs/i +m%content-type:.*text/html%i +/x-mailing-list:.*\@vger\.kernel\.org/i +# DATE: 25 Jun 01 3:08:39 AM +m/DATE:\s*..\s...\s..\s.*:..:..\s..\s*$/i +m/date:.*=\?.*\?=/i +#/charset=.*windows-/i +#/charset=.*utf-/i +/Bill s\.1618 TITLE III/i +/Advanced Mass Sender/i +/Jamail / +m/subject:.*China-diesel/i +m!diesel fuel injection! +m/Diffondi/i +m/Mail Bomber/ +m/X-Mailman-Version:/ +m/business letter from Beijing/i +m/camelot.co.jp/ +m/X-EM-Registration:/ +m/x-esmtp:/ +m/Local time zone must be set/ +m/tangfeng/i +m/X-Mailer:.*eMerge/i +m/X-Mailer:.Trade-Navigator/i +m/=?ISO-8859-1?Q?INFORMA=C7=C3O?=/i +m/From:.*MAILER-DAEMON/i +m/Subject:.*Antigen / +m/From:.*grumph.pakistanmail.com/ +m/CLASSIFIED/i +m/OTCBB:/ +m/Content-Type:.*charset=.*gb2312/ +m/Subject:.*=\?big5\?/ +m/Subject:.*=\?gb2312\?/ +m/X-Mailer:\s+eGroups/ +m/netatlantic.com/ +m/instrument.com.cn/ +m/X-Mailer:.*Group Mail/ +m/^Status:/ +m/^X-Status:/ +m/X-Set:/ +m/<>/ +m/^Subject:.*=?GB2312?/ +m/^X-Mailer:.*JiXing/ +m/^X-Mailer:.*MailXSender/ +m!Message-Id:.*<.*\@vger.kernel.org>! +m!Message-Id:.*<.*\@zeus.kernel.org>! +m/Subject:.*detected a virus / +#m/Anti-Virus/i +m/Subject:.*[Vv]irus [Ff]ound/ +m/Subject:.*[Vv]irus [Aa]lert/ +m/^Subject:\s*Report to Sender/ +m/^Subject:.*AntiVir ALARM/ +m/^Subject:.*BEST FILESYSTEM/ +m/^Subject:.*REISER4 FOR INCLUSION/ +m/^Content-Transfer-Encoding:\s*base64/i +m/CONFIDENTIAL/ +m/CONFIDENCE/ +m/PAYCHECK/ +m!^X-Library:\s*Indy! +m!Content-Type:\s*application/x-msdownload! +m!Conetnt-Type:\s*application/msword! +m!MiME-! +m!netdev-bounce\@oss\.sgi\.com! +m!polyglot.com.cn!i +m!Undeliverable:! +m!Bullet Proof! +m!qzsoft_directmail! +m!list of ingredients! +m!Power Diet! +m!big\@boss\.com! +m!from mail pickup service by smtp32.wxs.nl! +m!argentina.com!i +m!argentina.net!i +m!Employment Opportunity!i +m!Fudah Sanko!i +m!erotik!i +m!erotic!i +m!kamasutra!i +m!URGENT! +m!Panda Antivirus ha realizado!i +m!movieglobe!i +m!Syntax error in! +m!^Illegal-Object:! +m!Subject:.*paycheck!i +m!Subject:.*Urgent\s*Business\s*Request!i +m!Subject:.*Urgent\s*Business!i +m!Subject:.*Business\s*Request!i +m!Subject:.*Mail delivery failure! +m!Subject.*\[SPAM\]! +m!desease! +m!Subject:.*Norton AntiVirus detected! +m!X-Spam-Flag:.*YES! +m!Subject:.*\sSARS\s!i +m!Subject:.*MMS Notification! +m!Subject:.*Bitkeeper! +m!Subject:.*Switching to the OSL License.*! +m!Subject:.*RMS and reactions to him! +m!Subject:.*GNU server.*Gimme a break.*! +m!Subject:.*MIMEDefang Notification! +m!Subject:.*Thank you.*! +m!Subject:.*That movie.*! +m!Subject:.*Your details.*! +m!Subject:.*My details.*! +m!Subject:.*\svirus\s!i +m!Subject:.* viruses ! +m!Subject:.*\sContent.violation! +m!Subject:.*Symantec! +m!Subject:.*Rejected Mail! +m!Subject:.*Report to Recipient! +m!Subject:.*You sent potentially! +m!Subject:.*Content filtering! +m!Subject:.*penis.*!i +m!WAVA Postmaster! +m!^SUBJECT:! +m!Delivered-To:! +m!Subject:.*Footprints! +m!^From:.*matthewdenton\.com>!i +m!Klein Becker! +m!kleinbecker! +m!MOTSCO! +m!paypal! +m!\@tcob1.net! +m!^From:\s*Majordomo! +m!Cheap V.AGRA! +m!Subject:\s+fake\s*$! +m!lyris.net! +m!Subject:\s+Out of Office AutoReply! +m!Content-Type: multipart/alternative! +m!barrow_dj\@yahoo.com! +m!biowiks.com! +m!From:.*amavisd-new! +m!Subject:.*found.*virus!i +m!Subject:.*As Seen on CNN!i +m!Subject:.*Winningest!i +m!Subject:.*Mail Delivery! +m!qiaoxiaol\@126.com!i +m!Subject:.*Essential.*Software.*On.*CD!i +m!computeradmin.org!i +m!dfjndfv.com/! +m!LIPITOR! +m!VIOXX! +m!XANAX! +m!CELEBREX! +m!PROZAC! +m!VALIUM! +m!seen it on TV! +m!olympic\@! +m!test\@216\.! +m!Valium! +m!Prozac! +m!40free.net.ph! +m!ScanMail for Lotus Notes! +m!InternetBank Agreement! +m!X-WEBC-Mail-From-Script:! +m!X-Mailer: RLSP Mailer! +m!Subject: Rediff\'s Auto Response! +m!Subject:.*Linux Kernel Subversion Howto! +m!Email account utilization warning! +m!From:.*Lyris.List! +m!Listar command results! +m!EHLO vger.kernel.org! +m!HELO vger.kernel.org! +m!Subject:\s*BOUNCE ! +m!Uncle Den /o +m//o +m/Cashfiesta.com/o +m/BUSINESS RELATIONSHIP/o +m/unsubscribe from any mail lists/o +m/STOCK SET TO EXPLODE/io +m/OTCBB/o +m!^Current Price!o +m!^Stock:!o +m/have received this message in error/o +m/SESE-SEKO/o +m/ANAND BHATT/io +m/modalities/io +m/free adult site/io +m/mobutu/io +m/livechat/io +m/softcore/io +m/nigeria[. ]/io +m/liberia/io +m/ghana[. ]/o +m/special mailing/io +m/STRICTLY CONFIDENTIAL/io +m/HIGHLY CONFIDENTIAL/io +m/CONFIDENTIAL/o +m/URGENT BUSINESS/io +m/utmost secrecy/io +m/lovecity.ru/io +m/cool-date.net/io +m/5863 Leslie St/o +m!cgi-bin/varpro!o +m!EXCITING OFFER!io +m!clubdepot!io +m!ragazze!io +m!indebted for your address!o +m!business proposal!io +m!probate!io +m!beesold.com!io +m!which contained the viruses!o +m!sales\@!o +m!mailcomesandgoes!io +#m![\200-\237\241-\377]{8}!o +m!^Content-Type: application/ms-tnef!o +m!fastbizonline!o +m/INTERESSADO ACREDITE/io +m/TOTALMENTE GRATIS/io +m/TECAVUZ/o +m/KIZLAR/o +m/KIZLARI/o +m/SAPIK/o +m/HATUN/o +m/GIZLI KAMERA/o +m!PAYCHECK!o +m!MONEY MAKING OPPORTUNITY!io +m!NeuroTherapy!o +m!Below is the result of your form!o +m!Below is the result of your feedback form!o +m!Pheromone!io +m!Barrister!io +m/risk free transaction/io +m/smokesdirect/io +m/China Enterprise Management/io +m/unido.chinatop.net/io +m/Rus-SexServer/o +m!lol.to/bbs!o +m!Sales-O-Matic!io +m!INVESTMENT!o +m!INTRODUTION!o +m!To grab your FREE!io +m!DHS Club !o +m!Secure your position in!io +m!^X-Library:\s*Indy!o +m!singles-contacts!o +m!sincerely apologise if this e-mail!o +m!^Content-Type:\s*application/x-msdownload!o +m!^Content-Type:\s*application/msword!o +m!Trial Version of WorldMerge!o +m!artofservice!o +m!However strange or surprising this contact!o +m!business relationship with you!o +m!templatestyles\.com!o +m!THIS IS A ONE TIME SUBMISSION!io +m!YOUR NAME WAS SELECTED!o +m!This email is sent in compliance with strict anti-abuse!io +m!REVISTAS ERTICAS!o +m!Erotic magazines!o +m!Infosource Group!o +m!S. 1618 TITLE III!io +m!host4mail!io +m!Assine UOL!o +m!name of Allah!o +m!singles.com!o +m!liquid2d!io +m!To be removed from any future mailings!o +m!qzsoft_directmail!o +m!discountshaven!o +m!Mensaje automtico del sistema!o +m!\tname=".*\.pif"!o +m!\tname=".*\.PIF"!o +m!Sign up for your own PayPal account!o +m!Si usted quiere ser removido de nuetra lista envie!io +m!CSmtpMsgPart123!o +m!Lipotropic!o +m!power diet plus!io +m!kabila!io +m!MARYAM!io +m!ABACHA!io +m!Employment Opportunity!io +m!self motivated people!io +m!real world opportunity!io +m!EARN EXTRA INCOME!io +m!Secret to Multilevel marketing!io +m!overseas account!io +m!reliable and honest!io +m!Auditor General!io +m!binding agreement!io +m!/take-me-out/!o +m!This extraordinary offer!io +m!offer ends!io +m!to be removed from our email list!io +m!EMAIL EXTRACTION!io +m!Do not respond by email!io +m!prospect!io +m!\sopt-in\s!io +m!KATHMANDU!io +m!/remove-all/!io +m!Marijuana Alter!io +m!xxxcorner!io +m!Jesus Christ!io +m!buyer.s club!io +m!MINISTRY OF!io +m!OTB Computers!io +m!No sponsoring required!io +m!A ton of helpful Information products!io +m!No selling!io +m!Couple of weeks old!io +m!Pays daily!io +m!One time payment of!io +m!can pay you up to!io +m!Subscription Confirmation!io +m!movieglobe!io +m!savimbi!io +m!political asylum seekers!io +m!political asylum!io +m!asylum seeker!io +m!SEXO SAGRAD!io +m!sexosagrado!io +m!Decreto S\.1618!io +m!/optout/!io +m!dragonmail!io +m!disikus!io +m!^Enough\.!o +m! make money with !io +m!Opt-Out!io +m!Email Marketing!io +m!targetted emails!io +m!MoreInfoOffShore!io +m!If you are a smoker!io +m!lenders compete!io +m!reainance!io +m!Finance Company!io +m!hoop-buy!o +m!hoop-bid!o +m!helpu-web!o +m!annuities!o +m!Vjagrra!io +m!vjaagra!io +m!viagra!io +m!cialis[^a-z]!io +m!twobuswinesdays.com!io +m!braceletnewatch.com!io +m!garment!io +m!UNIVERSITY DIPLOMA!io +m!impeached!io +m!god fearing!io +m!promo code!io +m!lead list!io +m!referral network!io +m!lead list!io +m!UK lotto!io +m!excuria.com!io +m!Visit us on the web!io +m!cyberread!io +m!ebookstand!io +m!\sSARS\s!io +m!Customer Relations Department!o +m!get your essential copy!io +m!protect your privacy now!io +m!camfriend!io +m!webcam commun!io +m!category . winner!io +m!mortgage!io +m!International Promotion!io +m!Cable Descrambler!io +m!internet-offer!io +m!Mini-Breathalyzer!io +m!If you no longer wish to receive our offers and updates!o +m!address attached to ticket number!o +m! Lottery!io +m!captain69!o +m!re-analysing Heisenberg!io +m!Start der SpamAssassin Auswertung!o +m!Please see the attached zip file for details!o +m!\.remova-me\.!o +m!Our virus scanner detected a virus!o +m!Empresa procura!o +m!Empreendedor!o +m!=TELPHONE JOKES=!o +m!To be excluded from future promotions!o +m!SmileAtYou!o +m!Word-of-Mouth!o +m!mortage!io +m!the banks know about!io +m!lower mortgage repayments!io +m!softwaresavings!o +m!/cgi/redir!o +m!http://btrack.iwon.com/r\.pl\?redir=!o +m!best deal on your!o +m!VIRUS DETECTED!o +m!VIRUS ALERT!o +m!TROJAN DETECTED!o +m!DID YOU KNOW|A HACKER COULD BE!o +m!\e\[B!o +m!onlinesaleew!o +m!profitableproduct!o +m!slashmonthlypayments!o +m!dont want any more!o +m!dont want me to write any more!o +m!Combine your debt into !o +m!mail15.com!o +m!See the attached file for details!o +m!Please see the attached file for details!o +m!V I R U S A L E R T!o +m! VIRUS NOTIFICATION !o +m!%RANDOM_CHAR!o +m!Sobiga.F!o +m!Sobig\.f!o +m!interest on your debt!o +m!use this Internet Explorer patch now!o +m!UnbelievableSecretsCd!o +m! to you as a surprise!o +m!Your cash advance !o +m!Get your advance today!o +m!gallery-a.ru!o +m!1automationwiz!o +m!A Gift Of Poetry!o +m!\sSecurity\s+Company!io +m!THE CHILDREN OF GOD!io +m!born again Christian!io +m!v[i1]c[o0]d[i1]n!io +m!v[i1]cidon!io +m!Levitra!io +m!Blind Date!io +m!Due to mix up of some numbers and names!io +m! found a new typ of worm!o +m!I.ve send you a recover tool, to fix this problem!o +m! Strivectin!o +m!Klein Becker!o +m!lookingforablinddate!o +m!looking-for-you.org!io +m!smartphonessmart.com!io +m!bubbleenveloppe.com!io +m! Branded Watches !io +m!contact4you\.cc!io +m!HalfPriceLotion.com!io +m!Compliments of the day!io +m!mutual benefit!io +m!fiduciary!io +m!Academic Qualifications!io +m!prestigious NON.ACCREDIT+ED universit!io +m!Teledeteccion!io +m! ADMINISTRATION TRAINING !o +m!lolslideshow.com!o +m!Microsale!o +m! 123FreeTravel !o +m!HGH !o +m! Pharmacy !io +m!Xanax!o +m!Valium!o +m!Mlcrosoft !o +m!AmericanGreetings!o +m!If you are a smoker !o +m!parastatal!io +m!beneficiary!io +m!Bank Account!io +m!If you wish to be removed from this mailing list,!io +m!sent this to you by mistake!o +m!dumpsmarket!o +m!with cvv2 information!o +m!message contains Unicode characters and has been sent as!o +m!The message cannot be represented in 7-bit ASCII encoding!o +m!Mail transaction failed. Partial message is available.!o +m!www.rxeasymeds!o +m!CANADA BOOKS!oi +m!visiongain!o +m!This is a machine-generated message, please do not reply via email!o +m!BATES ALAN!o +m!eSafe detected a hostile!o +m!drlaurent.com!o +m!cartmed.com!o +m!medsfactory!o +m!Content-Type: application/x-zip-compressed; name=!o +m!Avtech Direct!o +m!YesPayment!o +m!O e-mail abaixo foi descartado !o +m!7d8NCOsEajX/1yIxiUXuGlAnm3v7Pvj/C/B1FxQrVCVbcG1rKlwAARgnAgHt2yFbKVgQJmr9!o +m!drop the hammer on the next girl!o +m!prescribedmeds.com!o +m!mdrecommends.com!o +m!medspro.com!o +m!medspro.net!o +m!healthpolicy.com!o +m!healthdo.com!o +m!improvedpills!o +m!newmedformula.com!o +m!/sv/index.php!o +m!C1AL1S!o +m!THE UNCERTAINTY PRIN!o +m!MatrixOne Tech Support!o +m!NeVeR!o +m!Content-Type: application/octet-stream; name=".*\.zip"!o +m!new drug that puts!io +m!drugsbusiness!o +m!V i a g r a!o +m!/sv/applepie!o +m!/s95/index.php!o +m!American Medical Directory!o +m!bizdeliver!o +m!chick you screw!io +m!mardox.com/!o +m!Eliminate All Bills!io +m!/gp/default.asp!o +m!lowerrates4you!io +m!ZhongHengLong!o +m!upfeeling\.cn!o +m!upfeeling\.com!o +m!amercenterpub!o +m!/knowspam.net/!o +m!choicerxsource!o +m!virtualcasinoes!o +m!casino-4-free.com!o +m!\@mailhec\.com!o +m!After the age of twenty-one!o +m!/hgh/index!o +m!affiliate_id=!o +m!/affiliate!o +m!/lv/index.php!o +m!/nomoremail!o +m!/gen_ads/!o +m!/pr/index.php!o +m!/gv/index.php!o +m!MEI LUNG HANDICRAFTS!io +m!einnews.com!o +m!deutsches-panel.com!o +m!cablefilterz!o +m! Barrow Linux kernel developer!o +m!TO BECOME A MEMBER OF THE GROUP!o +m!/rd.yahoo.com/!o +m!Canadian Subsidies !io +m!Canadian Business !io +m!C a n a d i a n!io +m!Associate Degree!io +m!Nutritionist!io +m!l0se weight!io +m!H[o0][o0]d[i1l]a!io +m!advicefound!io +m!bestsevendiamonds!io +m!/B2B/!io +m!fastherb.biz!io +m!.tealis.com!io +m!message contained restricted attachment!o +m!casinoes-4-you!io +m!urban-casino!io +m!this is an automated reply!io +m!this is an automatic reply!io +m!this is automatic reply!io +m!/av/val/!o +m!buycheapdrugs.biz!o +m! DEALS on SOFTWARE !io +m!teddychoice.biz/!o +m!peopleloveit.biz!o +m!shyx.biz/!o +m!shyxp.biz/!o +m!shyx.us/!o +m!shyxp.us/!o +m!sharyx.us/!o +m!loveforlust.biz!o +m!>Zitat:Zitat Date: Mon, 30 Apr 2007 15:29:05 -0700 Subject: [PATCH 0232/2612] WI/WC: Make output more suitable for feeding send-email with --- WC | 6 +++--- WI | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/WC b/WC index a4936154789448..15afe2372179af 100755 --- a/WC +++ b/WC @@ -6,10 +6,12 @@ next_at=$(git rev-parse --verify refs/heads/next) cat < Subject: What's cooking in git.git (topics) X-master-at: $master_at X-next-at: $next_at +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit Here are the topics that have been cooking. Commits prefixed with '-' are only in 'pu' while commits prefixed with '+' are @@ -19,5 +21,3 @@ order. EOF Meta/git-topic.perl --base=master | sed -e 's/^\*./*/' - - diff --git a/WI b/WI index 988eb4954eca35..fdd596defd5a3c 100755 --- a/WI +++ b/WI @@ -12,10 +12,12 @@ log () { ' } -echo "To: git@vger.kernel.org" +echo "From: Junio C Hamano " echo "Subject: What's in git.git (stable)" echo "X-maint-at: $maint_at" echo "X-master-at: $master_at" +echo "Content-Type: text/plain; charset=utf-8" +echo "Content-Transfer-Encoding: 8bit" tagged=`git rev-parse --not --verify tags/sa/maint` list=`git-rev-list $tagged refs/heads/maint 2>/dev/null` From 6a6e4d1cc1b4869d2ff48585472ab058c4c2ea72 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 30 Apr 2007 15:29:47 -0700 Subject: [PATCH 0233/2612] TODO: ident/filter is in. Also we would probably want to use gitattributes more. --- TODO | 48 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index 43f7d2fc6199bf..6c603dbf8e4623 100644 --- a/TODO +++ b/TODO @@ -24,7 +24,7 @@ From: Linus Torvalds Message-ID: -* Use blame machinery to track a single file (not path) in finer +* Use blame machinery to track a single file (not path) in a finer grained way. From: Linus Torvalds @@ -46,17 +46,6 @@ by dropping git-gui/ directory first and then binding git-gui.git as a subproject there. This needs to wait at least until v1.5.2 ships and gets installed at kernel.org and repo.or.cz -* Decide what to do with 'filter' and 'ident' attribute patches. - -From: Linus Torvalds -Message-ID: - -If we were to include it, we would need to make it clear that -this is a long piece of rope and you can strangle yourself with -it unless you are careful, and clarify what is and isn't -considered to be "careful". I have parked updates in 'pu', but -I do not know they are clear enough. - * TODO list management From: Daniel Barkalow @@ -75,12 +64,16 @@ Repeated requests against git-daemon makes it stuck under --syslog [jc: does not reproduce easily for me; has anybody seen it?] + * git-mirror (reverse of git-push --all). From: Shawn Pearce Message-ID: <20060926215745.GC8177@spearce.org> -[jc: may want the finished version for inclusion] +Pasky sent an updated version to the list recently, but the +general sentiment on the list seems that existing git-fetch +has enough features to perform most of what 'mirror' does. + * AsciiDoc 8 would break our documentation. @@ -103,6 +96,31 @@ not just diff with the first parent for a merge. [jc: Jakub is interested in it] +* Delegate gitweb part to somebody else. + +* Use gitattributes for more things. + + - 'precious' files that are not tracked but not + build-products. Currently people seem to put them in + .gitignore, but that is not quite right, as .gitignore is + meant for ignoring things that can be lost (build products, + editor backup files). "git clean -x" and "git checkout" to + another branch that has a file where the current branch has a + directory could lose such 'precious' files. + + - Customized "diff -p" markers per path (Johannes, on #git + 2007-04-30). + + I think it makes sense to give an extra parameter to xdiff + machinery to affect how "diff -p" markers are constructed (as + opposed to teach xdiff machinery to read gitattributes -- the + code does not have path information at that level). The + simplest interface would be to pass a regexp and have the + existing code always look for that regexp backwards. A more + complex one would involve a callback function, but I do not + know if that kind of complexity is worth it. + + - Others??? Technical (milder) @@ -130,7 +148,9 @@ Technical (trivial) * git-proxy should be spawned with sh -c 'command' $1 $2. -[jc: should it?] +[jc: should it? -- deciding if it should may not be "trivial", +but if it turns out to be the right thing to do, the change +itself is trivial.] * Maybe a true git-proxy command that reads the first request pkt-line, and redirects the request to its real destination. From d66570792799b3d611d05f41a86fcef34ef8e02b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 7 May 2007 22:28:46 -0700 Subject: [PATCH 0234/2612] TODO updates --- TODO | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/TODO b/TODO index 6c603dbf8e4623..def527bb9daf2f 100644 --- a/TODO +++ b/TODO @@ -85,17 +85,6 @@ the box. [jc: limbo?] -* Gitweb diff on merge commits - -From: Linus Torvalds -Subject: Re: git show and gitweb gives different result for kernel -Message-ID: - -Maybe allow gitweb to show diff with any parent and diff --cc, -not just diff with the first parent for a merge. - -[jc: Jakub is interested in it] - * Delegate gitweb part to somebody else. * Use gitattributes for more things. @@ -123,6 +112,15 @@ not just diff with the first parent for a merge. - Others??? +Technical (heavier) +------------------- + +* Subproject Porcelain. + + - recursive checkout + - recursive diff + + Technical (milder) ------------------ @@ -141,6 +139,11 @@ Technical (milder) Technical (trivial) ------------------- +* Update the lockfile protocol so that closing and renaming are + done inside lockfile commit time. Some filesystems do not + like an open file renamed and then closed. Come up with a + patch and pass Alex for an Ack. + * Mbx (not mbox) support for git-mailsplit. * git-clone fail .git/refs/foo (Yann Dirson ) From 4dd7ed74751580c88fc16112a4484b87723f07c3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 9 May 2007 01:38:44 -0700 Subject: [PATCH 0235/2612] TODO updates --- TODO | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/TODO b/TODO index def527bb9daf2f..2c7fad7697e3e7 100644 --- a/TODO +++ b/TODO @@ -14,6 +14,35 @@ to pick an item from the list and work on it. Recent issues ------------- +* Look at Daniel's parse-remote in C + +Message-ID: + +* parse-remote.sh has POSIXLY incorrect shell construct. + +Message-ID: <20070505080313.GA12170@gondor.apana.org.au> + +* Look into HPA's D-F conflict during rebase. + +Message-ID: <463FCD7C.4020009@zytor.com> + +* Use 'git diff' not 'git diff-tree' in merge and rebase + +From: James Bowes +Message-ID: <1178398134288-git-send-email-jbowes@dangerouslyinc.com> + +* gitk --left-right + +From: Linus Torvalds +Message-ID: +From: Junio C Hamano +Message-ID: <7vabwifl23.fsf@assigned-by-dhcp.cox.net> + +* Git Hacker's Manual + +From: Johannes Schindelin +Message-ID: + * Handling pushing into non-bare repository more gracefully. When git-push is done to a non-bare repository and updates the @@ -23,6 +52,13 @@ anything special. From: Linus Torvalds Message-ID: +* More verbose connect to help diag & prevent boredom + +From: "Michael S. Tsirkin" +Message-ID: <20070506195230.GA30339@mellanox.co.il> + +[jc: I think this should be done only under explicit user request to +go verbose.] * Use blame machinery to track a single file (not path) in a finer grained way. From 2fc378a31521b60e4f11e8e97d49ce3c60c3285e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 10 May 2007 17:02:20 -0700 Subject: [PATCH 0236/2612] Fix Meta/V and Meta/Doit for exactly tagged versions. --- Doit | 13 ++++++++++--- V | 13 +++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Doit b/Doit index bb1b0f32b37eac..7b949f9ceebe9f 100755 --- a/Doit +++ b/Doit @@ -29,10 +29,17 @@ do } if installed=$($HOME/git-$branch/bin/git version) && - { - version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') || + if version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') + then + : + elif version=v$(expr "$installed" : \ + 'git version \(.*\)\.rc[0-9]*$') + then + version="$version"-$(expr "$installed" : \ + 'git version .*\.\(rc[0-9]*\)$') + else version=v$(expr "$installed" : 'git version \(.*\)') - } && + fi && version=$(git rev-parse --verify "$version^0" 2>/dev/null) && test "z$version" = "z$revision" then diff --git a/V b/V index 8c4a6d40e9bf82..000a1d8fe115f5 100755 --- a/V +++ b/V @@ -3,8 +3,17 @@ for v in maint master next pu do installed=$($HOME/git-$v/bin/git version) - version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') || - version=v$(expr "$installed" : 'git version \(.*\)') + if version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') + then + : + elif version=v$(expr "$installed" : \ + 'git version \(.*\)\.rc[0-9]*$') + then + version="$version"-$(expr "$installed" : \ + 'git version .*\.\(rc[0-9]*\)$') + else + version=v$(expr "$installed" : 'git version \(.*\)') + fi version=$(git rev-parse --verify "$version^0" 2>/dev/null) revision=$(git show-ref -s --verify "refs/heads/$v") From a013dbae514b531f68cfb65c10edcf09e099b14c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 13 May 2007 13:05:50 -0700 Subject: [PATCH 0237/2612] TODO updates. --- TODO | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index 2c7fad7697e3e7..29b1c979b46bfd 100644 --- a/TODO +++ b/TODO @@ -14,10 +14,6 @@ to pick an item from the list and work on it. Recent issues ------------- -* Look at Daniel's parse-remote in C - -Message-ID: - * parse-remote.sh has POSIXLY incorrect shell construct. Message-ID: <20070505080313.GA12170@gondor.apana.org.au> @@ -26,6 +22,11 @@ Message-ID: <20070505080313.GA12170@gondor.apana.org.au> Message-ID: <463FCD7C.4020009@zytor.com> +This was resolved for git-apply codepath, but I suspect that +there are breakages in merge-recursive this exposes. + +Message-ID: <7vps569904.fsf@assigned-by-dhcp.cox.net> + * Use 'git diff' not 'git diff-tree' in merge and rebase From: James Bowes @@ -175,6 +176,11 @@ Technical (milder) Technical (trivial) ------------------- +* Give --stdin to git-log, similar to git-rev-list + +From: "Marco Costalba" +Message-ID: + * Update the lockfile protocol so that closing and renaming are done inside lockfile commit time. Some filesystems do not like an open file renamed and then closed. Come up with a From e00847dc1e45339b94b354d5668e4c0c8f73cda4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 16 May 2007 17:00:58 -0700 Subject: [PATCH 0238/2612] TODO updates --- TODO | 96 ++++++++++++++++++++---------------------------------------- 1 file changed, 31 insertions(+), 65 deletions(-) diff --git a/TODO b/TODO index 29b1c979b46bfd..cbbe1e0e276510 100644 --- a/TODO +++ b/TODO @@ -18,15 +18,6 @@ Recent issues Message-ID: <20070505080313.GA12170@gondor.apana.org.au> -* Look into HPA's D-F conflict during rebase. - -Message-ID: <463FCD7C.4020009@zytor.com> - -This was resolved for git-apply codepath, but I suspect that -there are breakages in merge-recursive this exposes. - -Message-ID: <7vps569904.fsf@assigned-by-dhcp.cox.net> - * Use 'git diff' not 'git diff-tree' in merge and rebase From: James Bowes @@ -39,12 +30,7 @@ Message-ID: From: Junio C Hamano Message-ID: <7vabwifl23.fsf@assigned-by-dhcp.cox.net> -* Git Hacker's Manual - -From: Johannes Schindelin -Message-ID: - -* Handling pushing into non-bare repository more gracefully. +* Pushing into a non-bare repository more gracefully. When git-push is done to a non-bare repository and updates the branch that is currently checked out, we currently do not do @@ -53,45 +39,6 @@ anything special. From: Linus Torvalds Message-ID: -* More verbose connect to help diag & prevent boredom - -From: "Michael S. Tsirkin" -Message-ID: <20070506195230.GA30339@mellanox.co.il> - -[jc: I think this should be done only under explicit user request to -go verbose.] - -* Use blame machinery to track a single file (not path) in a finer - grained way. - -From: Linus Torvalds -Message-ID: - -[jc: I have a fixed-up one parked in 'pu' and also outlined what -other things I think are needed in my response: - - Message-ID: <7vwt06wqv8.fsf@assigned-by-dhcp.cox.net> -] - -* Use git.git as the first public guinea pig of subproject - -From: Junio C Hamano -Message-ID: <7vmz13z4au.fsf@assigned-by-dhcp.cox.net> - -Use git.git as the first public guinea pig of subproject stuff, -by dropping git-gui/ directory first and then binding git-gui.git -as a subproject there. This needs to wait at least until v1.5.2 -ships and gets installed at kernel.org and repo.or.cz - -* TODO list management - -From: Daniel Barkalow -Message-ID: - -Maybe abandon this and have something similar on the main -branch, starting full at the beginning of the cycle and ending -empty (or full of "not in next release" entries) at the release? - * git-daemon bug? From: Franck Bui-Huu @@ -102,16 +49,6 @@ Repeated requests against git-daemon makes it stuck under --syslog [jc: does not reproduce easily for me; has anybody seen it?] -* git-mirror (reverse of git-push --all). - -From: Shawn Pearce -Message-ID: <20060926215745.GC8177@spearce.org> - -Pasky sent an updated version to the list recently, but the -general sentiment on the list seems that existing git-fetch -has enough features to perform most of what 'mirror' does. - - * AsciiDoc 8 would break our documentation. From: Stefan Richter @@ -157,11 +94,36 @@ Technical (heavier) - recursive checkout - recursive diff + From: Junio C Hamano + Message-ID: <11793556371774-git-send-email-junkio@cox.net> + +* make merge-recursive and read-tree -u more robust when D/F + conflict is involved. + + From: Junio C Hamano + Message-ID: <11793556371774-git-send-email-junkio@cox.net> + +* Use blame machinery to track a single file (not path) in a finer + grained way. + +From: Linus Torvalds +Message-ID: + +[jc: I have a fixed-up one parked in 'pu' and also outlined what +other things I think are needed in my response: + + Message-ID: <7vwt06wqv8.fsf@assigned-by-dhcp.cox.net> +] Technical (milder) ------------------ -* upload-pack support for start fetching from any valid point on +* add 'tree' entries to the index. + + From: Junio C Hamano + Message-ID: <11793556371774-git-send-email-junkio@cox.net> + +* upload-pack support to start fetching from any valid point on the history, not just published refs. (Erik W. Biederman ) @@ -172,6 +134,10 @@ Technical (milder) * "git fetch" should be able to use foreign SCM import backends such as svnimport and cvsimport. +* "git clone" should be a thin wrapper around init/remote/fetch/checkout + + From: Junio C Hamano + Message-ID: <11793556371774-git-send-email-junkio@cox.net> Technical (trivial) ------------------- From f8a7774f13df2954ce27b218490f83443e51748e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 18 May 2007 22:52:16 -0700 Subject: [PATCH 0239/2612] TODO update --- TODO | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/TODO b/TODO index cbbe1e0e276510..2ac0bc6bb0c178 100644 --- a/TODO +++ b/TODO @@ -142,6 +142,43 @@ Technical (milder) Technical (trivial) ------------------- +* Change the "first line of commit message is special" rule to + "first paragraph" and then wrap it. + + From: Junio C Hamano + Message-ID: <7vsla5pkug.fsf@assigned-by-dhcp.cox.net> + + This is slightly related, but I have been wondering about the + interaction with "single-liner summary, empty line and then the + rest" convention and various commands in the log family. + + Currently, --pretty=oneline and --pretty=email (hence format-patch) + take and use only the first line. I think we could change it to: + + - take the first paragraph, where the definition of the first + paragraph is "skip all blank lines from the beginning, and + then grab everything up to the next empty line". + + - replace all line breaks with a whitespace. + + This change would not affect well-behaved commit messages that + adhere to the convention, as their first paragraph always + consist of a single line. On the other hand, people from + different culture can get frustrated by their commit message + chomped at the first linebreak in the middle of sentence right + now, which would be helped by this change. + + Their Subject: and --pretty=oneline output would become very + long and unsightly, but their commit messages are already + ugly anyway, and such a change at least avoid the loss of + information. + + If we were to do this, Subject: line would most likely use + RFC2822 line folding at the places where line breaks were in the + original, but that goes without saying. + + What do people think? + * Give --stdin to git-log, similar to git-rev-list From: "Marco Costalba" From 412cb45a0baeb33b04368a62603541e91f99842e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 May 2007 02:50:36 -0700 Subject: [PATCH 0240/2612] MaintNotes update for 1.5.2/1.5.1.6 --- MaintNotes | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/MaintNotes b/MaintNotes index 9b5647e944f39a..978280f61d8cbf 100644 --- a/MaintNotes +++ b/MaintNotes @@ -1,6 +1,6 @@ -Now a new feature release is out, it's time to welcome new -people to the list. This message talks about how git.git is -managed, and how you can work with it. +Now a new feature release is out, it's a good time to welcome new +people to the list. This message talks about how git.git is managed, +and how you can work with it. * IRC and Mailing list @@ -13,24 +13,23 @@ The development however is primarily done on this mailing list you are reading right now. If you have patches, please send them to the list, following Documentation/SubmittingPatches. -I usually read all patches posted to the list, and follow almost -all the discussions on the list, unless the topic is about an -obscure corner that I do not personally use. But I am obviously -not perfect. If you sent a patch that you did not hear from -anybody for three days, that is a very good indication that it -was dropped on the floor --- please do not hesitate to remind -me. +I usually try to read all patches posted to the list, and follow +almost all the discussions on the list, unless the topic is about an +obscure corner that I do not personally use. But I am obviously not +perfect. If you sent a patch that you did not hear from anybody for +three days, that is a very good indication that it was dropped on the +floor --- please do not hesitate to remind me. The list archive is available at a few public sites as well: http://marc.theaimsgroup.com/?l=git http://news.gmane.org/gmane.comp.version-control.git + http://www.spinics.net/lists/git/ and some people seem to prefer to read it over NNTP: nntp://news.gmane.org/gmane.comp.version-control.git - * Repositories, branches and documentation. My public git.git repository is at: @@ -67,7 +66,11 @@ is a good demonstration of how to use an update hook to automate a task. There are four branches in git.git repository that track the -source tree of git: "master", "maint", "next", and "pu". +source tree of git: "master", "maint", "next", and "pu". I may +add more maintenance branches (e.g. "maint-1.5.1") if we have +huge backward incompatible feature updates in the future to keep +an older release alive; I may not, but the distributed nature of +git means any volunteer can run a stable-tree like that himself. The "master" branch is meant to contain what are very well tested and ready to be used in a production setting. There @@ -75,14 +78,14 @@ could occasionally be minor breakages or brown paper bag bugs but they are not expected to be anything major. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was v1.5.1 done on April 4th this year. +last such release was v1.5.2 done on May 20th this year. Whenever a feature release is made, "maint" branch is forked off from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was v1.5.0.7. +release they are updates to; the last such release was v1.5.1.6. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. @@ -118,7 +121,7 @@ The above three branches, "master", "maint" and "next" are never rewound, so you should be able to safely track them (this automatically means the topics that have been merged into "next" are not rebased, and you can find the tip of topic branches you -are interested in out of "git log next" output). +are interested in from the output of "git log next"). The "pu" (proposed updates) branch bundles all the remainder of topic branches. The "pu" branch, and topic branches that are @@ -134,8 +137,9 @@ Sometimes, an idea that looked promising turns out to be not so hot and the topic can be dropped from "pu" in such a case. A topic that is in "next" is expected to be tweaked and fixed to -perfection before it is merged to "master". Similarly to the -above I do it with this: +perfection before it is merged to "master" (that's why "master" +can be expected to stay very stable). Similarly to the above I +do it with this: git checkout master git merge that-topic-branch @@ -144,10 +148,10 @@ above I do it with this: However, being in "next" is not a guarantee to appear in the next release (being in "master" is such a guarantee, unless it is later found seriously broken and reverted), or even in any -future release. There even were cases that topics needed a few -reverting before graduating to "master", or a topic that already -was in "next" were reverted from "next" because fatal flaws were -found in them later. +future release. There even were cases that topics needed +reverting a few commits in them before graduating to "master", +or a topic that already was in "next" were entirely reverted +from "next" because fatal flaws were found in them later. Starting from v1.5.0, "master" and "maint" have release notes for the next release in Documentation/RelNotes-* files, so that @@ -186,12 +190,12 @@ relying on heavily: - Shawn and Nicolas Pitre on pack issues. - - Martin Langhoff on cvsserver and cvsimport. + - Martin Langhoff and Frank Lichtenheld on cvsserver and cvsimport. - Paul Mackerras on gitk. - Eric Wong on git-svn. - - Jakub Narebski and Luben Tuikov on gitweb. + - Jakub Narebski, Peter Baudis, and Luben Tuikov on gitweb. - J. Bruce Fields on documentaton issues. From 41649bee8e6540aabbc16b5255774ffb21a62e08 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 May 2007 02:52:53 -0700 Subject: [PATCH 0241/2612] MaintNotes: where is it found? --- MaintNotes | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MaintNotes b/MaintNotes index 978280f61d8cbf..847447056a9be0 100644 --- a/MaintNotes +++ b/MaintNotes @@ -199,3 +199,9 @@ relying on heavily: - Jakub Narebski, Peter Baudis, and Luben Tuikov on gitweb. - J. Bruce Fields on documentaton issues. + + +* This document + +The latest copy of this document is found in git.git repository, +on 'todo' branch, as MaintNotes. From 38fe95c56d51ef444d6ee4acf42abe2ea3f5fdff Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 23 May 2007 00:01:50 -0700 Subject: [PATCH 0242/2612] Move ko-master, sa/master and friends out of tags Otherwise they make "git-describe --contains" useless. --- KO | 14 +++++++------- SA | 5 +++-- TODO | 7 +++++++ WI | 4 ++-- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/KO b/KO index 2a6f301250ff7f..2d7346ff7bb739 100755 --- a/KO +++ b/KO @@ -5,14 +5,14 @@ case "$1" in --no-fetch) shift ;; *) git fetch ko ;; esac -mb=$(git merge-base ko-master master) -h=$(git rev-parse $mb ko-master | sort -u | wc -l) +mb=$(git merge-base ko/master master) +h=$(git rev-parse $mb ko/master | sort -u | wc -l) if test "$h" != 1 then - echo "OOOOOPPPPPPPPPPPPPPSSS! master is not ko-master fast forward." + echo "OOOOOPPPPPPPPPPPPPPSSS! master is not ko/master fast forward." exit 1 fi -git show-branch --topo-order ko-master master -git show-branch --topo-order ko-maint maint -git show-branch --topo-order ko-next next -git show-branch --topo-order ko-pu pu +git show-branch --topo-order ko/master master +git show-branch --topo-order ko/maint maint +git show-branch --topo-order ko/next next +git show-branch --topo-order ko/pu pu diff --git a/SA b/SA index b71be38c5de031..a54f03b4a6d669 100755 --- a/SA +++ b/SA @@ -2,6 +2,7 @@ # Take a snapshot of master and next *after* making an # "What's in git.git" announcement, for the next round. -git tag -f sa/master refs/heads/master -git tag -f sa/maint refs/heads/maint +git update-ref refs/hold/sa/master refs/heads/master +git update-ref refs/hold/sa/maint refs/heads/maint + diff --git a/TODO b/TODO index 2ac0bc6bb0c178..b759a8b2afb586 100644 --- a/TODO +++ b/TODO @@ -123,6 +123,13 @@ Technical (milder) From: Junio C Hamano Message-ID: <11793556371774-git-send-email-junkio@cox.net> +* "pure" clones, that does not know about where it was cloned + from. Specifically, no [remote "origin"] in .git/config, nor + refs/remotes/origin. + + From: Junio C Hamano + Message-ID: <7vr6pac86g.fsf@assigned-by-dhcp.cox.net> + * upload-pack support to start fetching from any valid point on the history, not just published refs. (Erik W. Biederman ) diff --git a/WI b/WI index fdd596defd5a3c..5578342086873c 100755 --- a/WI +++ b/WI @@ -19,7 +19,7 @@ echo "X-master-at: $master_at" echo "Content-Type: text/plain; charset=utf-8" echo "Content-Transfer-Encoding: 8bit" -tagged=`git rev-parse --not --verify tags/sa/maint` +tagged=`git rev-parse --not --verify hold/sa/maint` list=`git-rev-list $tagged refs/heads/maint 2>/dev/null` if test -n "$list" then @@ -29,7 +29,7 @@ then log $tagged heads/maint fi -tagged=`git rev-parse --not --verify tags/sa/master` +tagged=`git rev-parse --not --verify hold/sa/master` list=`git-rev-list $tagged refs/heads/master 2>/dev/null` if test -n "$list" then From b56d199c582de3022d0eb7198d384cc38a225275 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 25 May 2007 16:35:55 -0700 Subject: [PATCH 0243/2612] Mention #git is on freenode in MaintNotes Pointed out by Romain Francoise --- MaintNotes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintNotes b/MaintNotes index 847447056a9be0..8bf0352adf2b4a 100644 --- a/MaintNotes +++ b/MaintNotes @@ -5,7 +5,7 @@ and how you can work with it. * IRC and Mailing list Many active members of development community hang around on #git -IRC channel. Its log is available at: +IRC channel on Freenode. Its log is available at: http://colabti.de/irclogger/irclogger_log/git From 5e0f7b38877db5693e9a5ab06a3083aac7a5d0ea Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 10 Jun 2007 16:38:26 -0700 Subject: [PATCH 0244/2612] Remove resolved issues from TODO --- TODO | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/TODO b/TODO index b759a8b2afb586..b526dd3510c0ce 100644 --- a/TODO +++ b/TODO @@ -14,15 +14,6 @@ to pick an item from the list and work on it. Recent issues ------------- -* parse-remote.sh has POSIXLY incorrect shell construct. - -Message-ID: <20070505080313.GA12170@gondor.apana.org.au> - -* Use 'git diff' not 'git diff-tree' in merge and rebase - -From: James Bowes -Message-ID: <1178398134288-git-send-email-jbowes@dangerouslyinc.com> - * gitk --left-right From: Linus Torvalds @@ -48,7 +39,6 @@ Repeated requests against git-daemon makes it stuck under --syslog [jc: does not reproduce easily for me; has anybody seen it?] - * AsciiDoc 8 would break our documentation. From: Stefan Richter From 8621be05d65250de17ab8794b4a008179023f77b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 13 Jun 2007 01:23:14 -0700 Subject: [PATCH 0245/2612] -Wold-style-definition fix Signed-off-by: Junio C Hamano --- Make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Make b/Make index 8212813741abd5..5b1528ea6fe63e 100755 --- a/Make +++ b/Make @@ -37,7 +37,7 @@ while case $# in 0) break ;; esac do case "$1" in -pedantic) - O="$O -Werror -Wall -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=600" + O="$O -Werror -Wall -Wold-style-definition -ansi -pedantic -std=c99" ;; --) shift From 7c3659266ac2108c69c347fb3a0b184bfe617f8d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 13 Jun 2007 01:24:12 -0700 Subject: [PATCH 0246/2612] Prepare for 1.5.2.2 and 1.5.3 --- prep-maint.txt | 68 +++++++++++++++++++++ prep-master.txt | 155 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 223 insertions(+) create mode 100644 prep-maint.txt create mode 100644 prep-master.txt diff --git a/prep-maint.txt b/prep-maint.txt new file mode 100644 index 00000000000000..ff27001ad9f109 --- /dev/null +++ b/prep-maint.txt @@ -0,0 +1,68 @@ +diff --git a/Documentation/RelNotes-1.5.2.2.txt b/Documentation/RelNotes-1.5.2.2.txt +new file mode 100644 +index 0000000..e7cecc8 +--- /dev/null ++++ b/Documentation/RelNotes-1.5.2.2.txt +@@ -0,0 +1,40 @@ ++GIT v1.5.2.2 Release Notes ++========================== ++ ++Fixes since v1.5.2.1 ++-------------------- ++ ++* Usability fix ++ ++ - git-gui is shipped with its updated blame interface. It is ++ rumored that the older one was not just unusable but was ++ active health hazard, but this one is actually pretty. ++ Please see for yourself. ++ ++* Bugfixes ++ ++ - "git checkout fubar" was utterly confused when there is a ++ branch fubar and a tag fubar at the same time. It correctly ++ checks out the branch fubar now. ++ ++ - "git clone /path/foo" to clone a local /path/foo.git ++ repository left an incorrect configuration. ++ ++ - "git send-email" correctly unquotes RFC 2047 quoted names in ++ the patch-email before using their values. ++ ++ - We did not accept number of seconds since epoch older than ++ year 2000 as a valid timestamp. We now interpret positive ++ integers more than 8 digits as such, which allows us to ++ express timestamps more recent than March 1973. ++ ++ - git-cvsimport did not work when you have GIT_DIR to point ++ your repository at a nonstandard location. ++ ++* Many documentation updates ++ ++-- ++exec >/var/tmp/1 ++O=v1.5.2.1-67-g4f01d0f ++echo O=`git describe refs/heads/maint` ++git shortlog --no-merges $O..refs/heads/maint +diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN +index bd30398..3c3cd2f 100755 +--- a/GIT-VERSION-GEN ++++ b/GIT-VERSION-GEN +@@ -1,7 +1,7 @@ + #!/bin/sh + + GVF=GIT-VERSION-FILE +-DEF_VER=v1.5.2.1.GIT ++DEF_VER=v1.5.2.2.GIT + + LF=' + ' +diff --git a/RelNotes b/RelNotes +index 403fb97..61f9778 120000 +--- a/RelNotes ++++ b/RelNotes +@@ -1 +1 @@ +-Documentation/RelNotes-1.5.2.1.txt +\ No newline at end of file ++Documentation/RelNotes-1.5.2.2.txt +\ No newline at end of file diff --git a/prep-master.txt b/prep-master.txt new file mode 100644 index 00000000000000..2f619c2602cce9 --- /dev/null +++ b/prep-master.txt @@ -0,0 +1,155 @@ +diff --git a/Documentation/RelNotes-1.5.3.txt b/Documentation/RelNotes-1.5.3.txt +index d111661..6eb85aa 100644 +--- a/Documentation/RelNotes-1.5.3.txt ++++ b/Documentation/RelNotes-1.5.3.txt +@@ -1,4 +1,4 @@ +-GIT v1.5.3 Release Notes (draft) ++GIT v1.5.3 Release Notes + ======================== + + Updates since v1.5.2 +@@ -10,6 +10,8 @@ Updates since v1.5.2 + * Thee are a handful pack-objects changes to help you cope better with + repositories with pathologically large blobs in them. + ++* Comes with git-gui 0.8.0. ++ + * New commands and options. + + - "git-submodule" command helps you manage the projects from +@@ -36,8 +38,38 @@ Updates since v1.5.2 + - "git repack" can be told to split resulting packs to avoid + exceeding limit specified with "--max-pack-size". + ++ - "git fsck" gained --verbose option. This is really really ++ verbose but it might help you identify exact commit that is ++ corrupt in your repository. ++ ++ - "git format-patch" learned --numbered-files option. This ++ may be useful for MH users. ++ ++ - "git tag -n -l" shows tag annotations while listing tags. ++ ++ - "git cvsimport" can optionally use the separate-remote layout. ++ ++ - "git blame" can be told to see through commits that changes ++ whitespaces and indentation levels with "-w" option. ++ + * Updated behavior of existing commands. + ++ - "git mergetool" chooses its backend more wisely, taking ++ notice of its environment such as use of X, Gnome/KDE, etc. ++ ++ - "gitweb" shows merge commits a lot nicer than before. The ++ default view uses more compact --cc format, while the UI ++ allows to choose normal diff with any parent. ++ ++ - snapshot files "gitweb" creates from a repository at ++ $path/$project/.git are more useful. We use $project part ++ in the filename, which we used to discard. ++ ++ - "git cvsimort" creates lightweight tag; there is not any ++ interesting information we can record in an annotated tag, ++ and the handcrafted ones the old code created was not ++ properly formed anyway. ++ + - "git push" pretends that you immediately fetched back from + the remote by updating corresponding remote tracking + branches if you have any. +@@ -48,17 +80,25 @@ Updates since v1.5.2 + - "git-apply --whitespace=strip" removes blank lines added at + the end of the file. + +- - fetch over git native protocols with -v shows connection ++ - "git-fetch" over git native protocols with -v shows connection + status, and the IP address of the other end, to help + diagnosing problems. + +- - core.legacyheaders is no more, although we still can read +- objects created in a new loose object format. ++ - We used to have core.legacyheaders configuration, when ++ set to false, allowed git to write loose objects in a format ++ that mimicks the format used by objects stored in packs. It ++ turns out that this was not so useful. Although we will ++ continue to read objects written in that format, we do not ++ honor that configuration anymore and create loose objects in ++ the legacy/traditional format. ++ ++ - "--find-copies-harder" option to diff family can now be ++ spelled as "-C -C" for brevity. + + - "git-mailsplit" (hence "git-am") can read from Maildir + formatted mailboxes. + +- - "git cvsserver" does not barf upon seeing "cvs login" ++ - "git-cvsserver" does not barf upon seeing "cvs login" + request. + + - "pack-objects" honors "delta" attribute set in +@@ -68,6 +108,8 @@ Updates since v1.5.2 + - new-workdir script (in contrib) can now be used with a bare + repository. + ++ - "git-mergetool" learned to use gvimdiff. ++ + + * Builds + +@@ -88,22 +130,40 @@ Updates since v1.5.2 + the object requested the last time, which exploits the + locality of references. + ++ - verifying pack contents done by "git fsck --full" got boost ++ by carefully choosing the order to verify objects in them. ++ ++ + Fixes since v1.5.2 + ------------------ + + All of the fixes in v1.5.2 maintenance series are included in + this release, unless otherwise noted. + +-* Bugfixes ++* Bugfixes ('+' needs cherry-picking to maint) ++ ++ + "git-merge-recursive" does not try to run file level merge ++ on binary files. ++ ++ + "git-branch --track" did not create tracking configuration ++ correctly when the branch name had slash in it. ++ ++ + "gitweb" had trouble handling non UTF-8 text with older ++ Encode.pm Perl module. ++ ++ + The email address of the user specified with user.email ++ configuration was overriden by EMAIL environment variable. ++ ++ + The tree parser did not warn about tree entries with ++ nonsense file modes, and assumed they must be blobs. + + - .... This has not + been backported to 1.5.2.x series, as it is rather an + intrusive change. + +- + -- + exec >/var/tmp/1 +-O=v1.5.2-45-ged82edc +-O=v1.5.2-172-g1a8b769 ++O=v1.5.2.1-133-gd44c782 ++O=v1.5.2.1-271-g90ac368 + echo O=`git describe refs/heads/master` + git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint +diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN +index 06c360b..3c0032c 100755 +--- a/GIT-VERSION-GEN ++++ b/GIT-VERSION-GEN +@@ -1,7 +1,7 @@ + #!/bin/sh + + GVF=GIT-VERSION-FILE +-DEF_VER=v1.5.2.GIT ++DEF_VER=v1.5.3.GIT + + LF=' + ' From f2039d7ce06c57af0f3272f8174e095b6552e8c2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 13 Jun 2007 01:24:35 -0700 Subject: [PATCH 0247/2612] send-email wrapper --- SE | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 SE diff --git a/SE b/SE new file mode 100755 index 00000000000000..449d976c5aa9fb --- /dev/null +++ b/SE @@ -0,0 +1,34 @@ +#!/bin/sh + +me='Junio C Hamano ' +smtp='smtp.west.cox.net' +to='git@vger.kernel.org' + +#smtp=/var/tmp/smtp-server + +while case $# in 0) break ;; esac +do + case "$1" in + --dry-run | -n) + dryrun=--dry-run + ;; + -*) + echo >&2 "? $1" + exit 1 + ;; + *) + break + ;; + esac + shift +done + +git-send-email \ + --from="$me" \ + --no-chain-reply-to \ + --to="$to" \ + --suppress-from \ + --no-signed-off-cc \ + --smtp-server=$smtp \ + $dryrun \ + "$@" From 31cefaf601803b6e87f5425f05ed4e3a8325b1fa Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 13 Jun 2007 01:25:02 -0700 Subject: [PATCH 0248/2612] Try formatting our docs with AsciiDoc 8 --- docbuild-8.sh | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100755 docbuild-8.sh diff --git a/docbuild-8.sh b/docbuild-8.sh new file mode 100755 index 00000000000000..f854fdfad07ca3 --- /dev/null +++ b/docbuild-8.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +PATH=~/asciidoc/bin:$PATH \ +make prefix=/var/tmp/asciidoc8 \ + WEBDOC_DEST=/var/tmp/asciidoc8/webdoc \ + install install-webdoc From a4c8b9e1df91a308768a4870e1f32a23202b21aa Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 13 Jun 2007 01:25:21 -0700 Subject: [PATCH 0249/2612] sample index.aux --- index.aux | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 index.aux diff --git a/index.aux b/index.aux new file mode 100644 index 00000000000000..dd462664bb4404 --- /dev/null +++ b/index.aux @@ -0,0 +1,2 @@ +git.junio%2f.git Junio+C+Hamano +linux-2.6%2F.git Linus+Torvalds From c36a84426abe837b28ee25eea55a0a53da2385d0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 15 Jun 2007 22:43:32 -0700 Subject: [PATCH 0250/2612] Meta/Make: do not check old-style-def while compiling older revisions. --- Make | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Make b/Make index 5b1528ea6fe63e..389ca28a9d5e8b 100755 --- a/Make +++ b/Make @@ -13,6 +13,8 @@ export PATH LANG LC_CTYPE #GIT_SVN_NO_LIB=1 #export GIT_SVN_NO_LIB +old_style_def_fix=b79d18c92d9f4841a6a1a29b7b2373a8ff9871e1 + head=`git symbolic-ref HEAD 2>/dev/null` && branch=`expr "$head" : 'refs/heads/\(.*\)'` || branch=detached @@ -37,7 +39,13 @@ while case $# in 0) break ;; esac do case "$1" in -pedantic) - O="$O -Werror -Wall -Wold-style-definition -ansi -pedantic -std=c99" + o= && + rev=$(git-rev-parse HEAD) && + case "$(git-merge-base "$old_style_def_fix" "$rev")" in + $old_style_def_fix) + o=-Wold-style-definition ;; + esac + O="$O -Werror -Wall $o -ansi -pedantic -std=c99" ;; --) shift From f64024865054ec52010eaf10304fbd1ec463eec6 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 16 Jun 2007 02:23:55 -0700 Subject: [PATCH 0251/2612] TODO: AsciiDoc 8 compatibility. --- TODO | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/TODO b/TODO index b526dd3510c0ce..eb6d11db868db6 100644 --- a/TODO +++ b/TODO @@ -39,16 +39,6 @@ Repeated requests against git-daemon makes it stuck under --syslog [jc: does not reproduce easily for me; has anybody seen it?] -* AsciiDoc 8 would break our documentation. - -From: Stefan Richter -Message-ID: <4523EC14.6070806@s5r6.in-berlin.de> - -AsciiDoc 8 does not grok documents written for AsciiDoc 7 out of -the box. - -[jc: limbo?] - * Delegate gitweb part to somebody else. * Use gitattributes for more things. From 38fab8a2ecbe52443772a870e8ea3df3a4cb428d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 16 Jun 2007 02:25:37 -0700 Subject: [PATCH 0252/2612] An early preparation for 1.5.3-rc0 --- prep-master.txt | 64 ++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/prep-master.txt b/prep-master.txt index 2f619c2602cce9..b0acb17a58d431 100644 --- a/prep-master.txt +++ b/prep-master.txt @@ -1,5 +1,5 @@ diff --git a/Documentation/RelNotes-1.5.3.txt b/Documentation/RelNotes-1.5.3.txt -index d111661..6eb85aa 100644 +index d111661..4b7f472 100644 --- a/Documentation/RelNotes-1.5.3.txt +++ b/Documentation/RelNotes-1.5.3.txt @@ -1,4 +1,4 @@ @@ -8,7 +8,7 @@ index d111661..6eb85aa 100644 ======================== Updates since v1.5.2 -@@ -10,6 +10,8 @@ Updates since v1.5.2 +@@ -10,8 +10,13 @@ Updates since v1.5.2 * Thee are a handful pack-objects changes to help you cope better with repositories with pathologically large blobs in them. @@ -16,8 +16,13 @@ index d111661..6eb85aa 100644 + * New commands and options. ++ - "git-cvsserver" learned new options (--base-path, --export-all, ++ --strict-paths) inspired by git-daemon. ++ - "git-submodule" command helps you manage the projects from -@@ -36,8 +38,38 @@ Updates since v1.5.2 + the superproject that contain them. + +@@ -36,9 +41,39 @@ Updates since v1.5.2 - "git repack" can be told to split resulting packs to avoid exceeding limit specified with "--max-pack-size". @@ -37,6 +42,7 @@ index d111661..6eb85aa 100644 + * Updated behavior of existing commands. +- - "git push" pretends that you immediately fetched back from + - "git mergetool" chooses its backend more wisely, taking + notice of its environment such as use of X, Gnome/KDE, etc. + @@ -53,10 +59,11 @@ index d111661..6eb85aa 100644 + and the handcrafted ones the old code created was not + properly formed anyway. + - - "git push" pretends that you immediately fetched back from ++ - "git-push" pretends that you immediately fetched back from the remote by updating corresponding remote tracking branches if you have any. -@@ -48,17 +80,25 @@ Updates since v1.5.2 + +@@ -48,17 +83,25 @@ Updates since v1.5.2 - "git-apply --whitespace=strip" removes blank lines added at the end of the file. @@ -86,16 +93,25 @@ index d111661..6eb85aa 100644 request. - "pack-objects" honors "delta" attribute set in -@@ -68,6 +108,8 @@ Updates since v1.5.2 +@@ -68,10 +111,16 @@ Updates since v1.5.2 - new-workdir script (in contrib) can now be used with a bare repository. + - "git-mergetool" learned to use gvimdiff. ++ ++ - "gitview" (in contrib) has a better blame interface. + * Builds -@@ -88,22 +130,40 @@ Updates since v1.5.2 +- - ++ - old-style function definitions (most notably, a function ++ without parameter defined with "func()", not "func(void)") ++ have been eradicated. + + * Performance Tweaks + +@@ -88,6 +137,10 @@ Updates since v1.5.2 the object requested the last time, which exploits the locality of references. @@ -106,38 +122,22 @@ index d111661..6eb85aa 100644 Fixes since v1.5.2 ------------------ - All of the fixes in v1.5.2 maintenance series are included in - this release, unless otherwise noted. +@@ -96,14 +149,11 @@ this release, unless otherwise noted. --* Bugfixes -+* Bugfixes ('+' needs cherry-picking to maint) -+ -+ + "git-merge-recursive" does not try to run file level merge -+ on binary files. -+ -+ + "git-branch --track" did not create tracking configuration -+ correctly when the branch name had slash in it. -+ -+ + "gitweb" had trouble handling non UTF-8 text with older -+ Encode.pm Perl module. -+ -+ + The email address of the user specified with user.email -+ configuration was overriden by EMAIL environment variable. -+ -+ + The tree parser did not warn about tree entries with -+ nonsense file modes, and assumed they must be blobs. - - - .... This has not - been backported to 1.5.2.x series, as it is rather an - intrusive change. + * Bugfixes +- - .... This has not +- been backported to 1.5.2.x series, as it is rather an +- intrusive change. - ++ - "gitweb" had trouble handling non UTF-8 text with older ++ Encode.pm Perl module. + -- exec >/var/tmp/1 -O=v1.5.2-45-ged82edc -O=v1.5.2-172-g1a8b769 -+O=v1.5.2.1-133-gd44c782 -+O=v1.5.2.1-271-g90ac368 ++O=v1.5.2.2-236-g952c8c5 echo O=`git describe refs/heads/master` git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN From 9ae81bbc1c8adad26f782f1363552daad46fd2ca Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 29 Jun 2007 09:21:33 -0700 Subject: [PATCH 0253/2612] Wrap "What's in" list --- WI | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/WI b/WI index 5578342086873c..f065b8979a299c 100755 --- a/WI +++ b/WI @@ -5,11 +5,7 @@ maint_at=$(git rev-parse --verify refs/heads/maint) master_at=$(git rev-parse --verify refs/heads/master) log () { - git shortlog --no-merges "$@" | - perl -pe ' - if (/^ /) { s// /; } - elsif (!/^$/) { s/^/ / } - ' + git shortlog -w70,2,6 --no-merges "$@" } echo "From: Junio C Hamano " From dd493164846f7a73373b82f2e3bfcb9f8c760441 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 29 Jun 2007 09:22:14 -0700 Subject: [PATCH 0254/2612] Start preparing for 1.5.2.3 and 1.5.3 --- prep-maint.txt | 62 ++++++++------------- prep-master.txt | 142 ------------------------------------------------ 2 files changed, 24 insertions(+), 180 deletions(-) diff --git a/prep-maint.txt b/prep-maint.txt index ff27001ad9f109..83dbea48c11b26 100644 --- a/prep-maint.txt +++ b/prep-maint.txt @@ -1,68 +1,54 @@ -diff --git a/Documentation/RelNotes-1.5.2.2.txt b/Documentation/RelNotes-1.5.2.2.txt +diff --git a/Documentation/RelNotes-1.5.2.3.txt b/Documentation/RelNotes-1.5.2.3.txt new file mode 100644 -index 0000000..e7cecc8 +index 0000000..6ba264d --- /dev/null -+++ b/Documentation/RelNotes-1.5.2.2.txt -@@ -0,0 +1,40 @@ -+GIT v1.5.2.2 Release Notes ++++ b/Documentation/RelNotes-1.5.2.3.txt +@@ -0,0 +1,26 @@ ++GIT v1.5.2.3 Release Notes +========================== + -+Fixes since v1.5.2.1 ++Fixes since v1.5.2.2 +-------------------- + -+* Usability fix ++ * Bugfixes + -+ - git-gui is shipped with its updated blame interface. It is -+ rumored that the older one was not just unusable but was -+ active health hazard, but this one is actually pretty. -+ Please see for yourself. ++ - Version 2 pack index format was introduced in version 1.5.2 ++ to support pack files that has offset that cannot be ++ represented in 32-bit. The runtime code to validate such ++ an index mishandled such an index for an empty pack. + -+* Bugfixes ++ - Commit walkers (most notably, fetch over http protocol) ++ tried to traverse commit objects contained in trees (aka ++ subproject); they shouldn't. + -+ - "git checkout fubar" was utterly confused when there is a -+ branch fubar and a tag fubar at the same time. It correctly -+ checks out the branch fubar now. ++ * Documentation Fixes and Updates + -+ - "git clone /path/foo" to clone a local /path/foo.git -+ repository left an incorrect configuration. ++ - git-config --regexp was not documented properly. + -+ - "git send-email" correctly unquotes RFC 2047 quoted names in -+ the patch-email before using their values. -+ -+ - We did not accept number of seconds since epoch older than -+ year 2000 as a valid timestamp. We now interpret positive -+ integers more than 8 digits as such, which allows us to -+ express timestamps more recent than March 1973. -+ -+ - git-cvsimport did not work when you have GIT_DIR to point -+ your repository at a nonstandard location. -+ -+* Many documentation updates -+ -+-- ++-- +exec >/var/tmp/1 -+O=v1.5.2.1-67-g4f01d0f ++O=v1.5.2.2-11-gb833651 +echo O=`git describe refs/heads/maint` +git shortlog --no-merges $O..refs/heads/maint diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN -index bd30398..3c3cd2f 100755 +index 3c3cd2f..5c6d2b2 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE --DEF_VER=v1.5.2.1.GIT -+DEF_VER=v1.5.2.2.GIT +-DEF_VER=v1.5.2.2.GIT ++DEF_VER=v1.5.2.3.GIT LF=' ' diff --git a/RelNotes b/RelNotes -index 403fb97..61f9778 120000 +index 61f9778..a1c82a8 120000 --- a/RelNotes +++ b/RelNotes @@ -1 +1 @@ --Documentation/RelNotes-1.5.2.1.txt +-Documentation/RelNotes-1.5.2.2.txt \ No newline at end of file -+Documentation/RelNotes-1.5.2.2.txt ++Documentation/RelNotes-1.5.2.3.txt \ No newline at end of file diff --git a/prep-master.txt b/prep-master.txt index b0acb17a58d431..e45631ac83159d 100644 --- a/prep-master.txt +++ b/prep-master.txt @@ -1,145 +1,3 @@ -diff --git a/Documentation/RelNotes-1.5.3.txt b/Documentation/RelNotes-1.5.3.txt -index d111661..4b7f472 100644 ---- a/Documentation/RelNotes-1.5.3.txt -+++ b/Documentation/RelNotes-1.5.3.txt -@@ -1,4 +1,4 @@ --GIT v1.5.3 Release Notes (draft) -+GIT v1.5.3 Release Notes - ======================== - - Updates since v1.5.2 -@@ -10,8 +10,13 @@ Updates since v1.5.2 - * Thee are a handful pack-objects changes to help you cope better with - repositories with pathologically large blobs in them. - -+* Comes with git-gui 0.8.0. -+ - * New commands and options. - -+ - "git-cvsserver" learned new options (--base-path, --export-all, -+ --strict-paths) inspired by git-daemon. -+ - - "git-submodule" command helps you manage the projects from - the superproject that contain them. - -@@ -36,9 +41,39 @@ Updates since v1.5.2 - - "git repack" can be told to split resulting packs to avoid - exceeding limit specified with "--max-pack-size". - -+ - "git fsck" gained --verbose option. This is really really -+ verbose but it might help you identify exact commit that is -+ corrupt in your repository. -+ -+ - "git format-patch" learned --numbered-files option. This -+ may be useful for MH users. -+ -+ - "git tag -n -l" shows tag annotations while listing tags. -+ -+ - "git cvsimport" can optionally use the separate-remote layout. -+ -+ - "git blame" can be told to see through commits that changes -+ whitespaces and indentation levels with "-w" option. -+ - * Updated behavior of existing commands. - -- - "git push" pretends that you immediately fetched back from -+ - "git mergetool" chooses its backend more wisely, taking -+ notice of its environment such as use of X, Gnome/KDE, etc. -+ -+ - "gitweb" shows merge commits a lot nicer than before. The -+ default view uses more compact --cc format, while the UI -+ allows to choose normal diff with any parent. -+ -+ - snapshot files "gitweb" creates from a repository at -+ $path/$project/.git are more useful. We use $project part -+ in the filename, which we used to discard. -+ -+ - "git cvsimort" creates lightweight tag; there is not any -+ interesting information we can record in an annotated tag, -+ and the handcrafted ones the old code created was not -+ properly formed anyway. -+ -+ - "git-push" pretends that you immediately fetched back from - the remote by updating corresponding remote tracking - branches if you have any. - -@@ -48,17 +83,25 @@ Updates since v1.5.2 - - "git-apply --whitespace=strip" removes blank lines added at - the end of the file. - -- - fetch over git native protocols with -v shows connection -+ - "git-fetch" over git native protocols with -v shows connection - status, and the IP address of the other end, to help - diagnosing problems. - -- - core.legacyheaders is no more, although we still can read -- objects created in a new loose object format. -+ - We used to have core.legacyheaders configuration, when -+ set to false, allowed git to write loose objects in a format -+ that mimicks the format used by objects stored in packs. It -+ turns out that this was not so useful. Although we will -+ continue to read objects written in that format, we do not -+ honor that configuration anymore and create loose objects in -+ the legacy/traditional format. -+ -+ - "--find-copies-harder" option to diff family can now be -+ spelled as "-C -C" for brevity. - - - "git-mailsplit" (hence "git-am") can read from Maildir - formatted mailboxes. - -- - "git cvsserver" does not barf upon seeing "cvs login" -+ - "git-cvsserver" does not barf upon seeing "cvs login" - request. - - - "pack-objects" honors "delta" attribute set in -@@ -68,10 +111,16 @@ Updates since v1.5.2 - - new-workdir script (in contrib) can now be used with a bare - repository. - -+ - "git-mergetool" learned to use gvimdiff. -+ -+ - "gitview" (in contrib) has a better blame interface. -+ - - * Builds - -- - -+ - old-style function definitions (most notably, a function -+ without parameter defined with "func()", not "func(void)") -+ have been eradicated. - - * Performance Tweaks - -@@ -88,6 +137,10 @@ Updates since v1.5.2 - the object requested the last time, which exploits the - locality of references. - -+ - verifying pack contents done by "git fsck --full" got boost -+ by carefully choosing the order to verify objects in them. -+ -+ - Fixes since v1.5.2 - ------------------ - -@@ -96,14 +149,11 @@ this release, unless otherwise noted. - - * Bugfixes - -- - .... This has not -- been backported to 1.5.2.x series, as it is rather an -- intrusive change. -- -+ - "gitweb" had trouble handling non UTF-8 text with older -+ Encode.pm Perl module. - - -- - exec >/var/tmp/1 --O=v1.5.2-45-ged82edc --O=v1.5.2-172-g1a8b769 -+O=v1.5.2.2-236-g952c8c5 - echo O=`git describe refs/heads/master` - git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index 06c360b..3c0032c 100755 --- a/GIT-VERSION-GEN From 10377e33647a887975b846f2742f79028b952ca7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 1 Jul 2007 22:16:28 -0700 Subject: [PATCH 0255/2612] Release checklist --- Checklist.txt | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Checklist.txt diff --git a/Checklist.txt b/Checklist.txt new file mode 100644 index 00000000000000..37745f39487537 --- /dev/null +++ b/Checklist.txt @@ -0,0 +1,66 @@ +Release checklist. + + : shell; THIS=1.5.2.3 + : shell; PREV=1.5.2.2 + + - The usual build/test, locally and on k.org private. + + - "git shortlog -s v$PREV..maint" and update .mailmap + + - Update Documentation/RelNotes-$THIS.txt, make sure RelNotes + points to it, update GIT-VERSION-GEN. + + - Proofread RelNotes. + + - Commit "GIT $THIS"; create signed tag v$THIS with "GIT + $THIS". + + - Push to builder: + + : shell; git push builders tag $THIS + : shell; git push builders + + - Build on builder; take resulting RPM tarball to k.org; + + : builder; cd git.git + : builder; git checkout maint && Meta/DoKernelOrg maint + : builder; cd .. && scp $THIS.tar master.kernel.org:. + + - Push to k.org private: + + : shell; git push ko-private tag $THIS + : shell; git push ko-private + + - Build on k.org: + + : k.org; cd rpms && tar xf ../$THIS.tar + : k.org; cd ../git.git + : k.org; git checkout maint && Meta/DoKernelOrg maint + + - Merge in 'maint' to 'master', and update the "stale" list of + documents in 'master': + + : shell; git checkout master + : shell; git merge maint + : shell; edit Documentation/git.txt + : shell; git commit + + - Push the results out: + + : shell; git push ko tag $THIS + : shell; git push repo tag $THIS + : shell; git push ko + : shell; git push repo + + - Extract the documentation on k.org: + + : k.org; cd /pub/software/scm/git/docs + : k.org; mkdir v$THIS && cd v$THIS + : k.org; tar zxf ../../git-htmldocs-$THIS.tar.gz + + - Prepare and send out the announce: + + : shell; Meta/Announce maint $PREV + + - Update Meta/MaintNotes and send it out (when releasing from + 'master'). From 8baedac94b537bf3b66f7c35f1f3b29b76f4d0c5 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 7 Jul 2007 00:30:09 -0700 Subject: [PATCH 0256/2612] TODO updates --- TODO | 59 ++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index eb6d11db868db6..95dfc6fec0d279 100644 --- a/TODO +++ b/TODO @@ -14,6 +14,47 @@ to pick an item from the list and work on it. Recent issues ------------- +* gitweb patches (bunch of them) + +From: Matt McCutchen +Subject: [PATCH] gitweb: snapshot cleanups & support for offering multiple formats +Message-ID: <1183053733.6108.0.camel@mattlaptop2> + +Subject: [PATCH] gitweb: make search form generate pathinfo-style URLs +Message-ID: <1183057027.6108.4.camel@mattlaptop2> + +Subject: [PATCH] gitweb: make "No commits" in project list gray, not bold green +Message-ID: <1183068922.6108.8.camel@mattlaptop2> + +From: Miklos Vajna +Subject: [PATCH] gitweb: prefer git_get_project_owner() over get_file_owner() +Message-ID: <20070703221122.GI32766@genesis.frugalware.org> + +From: Michael Hendricks +Subject: [PATCH] gitweb: configurable width for the projects list Description column +Message-ID: <11835958082458-git-send-email-michael@ndrix.org> + + +* switching branches when b changes between symlink and directory in a/b/c + +From: Pierre Habouzit +Subject: [BUG (or misfeature?)] git checkout and symlinks +Message-ID: <20070704203541.GA13286@artemis.corp> + + +* cherry-pick unexpected conflicts + +From: Gerrit Pape +Subject: Re: unexpected git-cherry-pick conflict +Date: Wed, 13 Jun 2007 13:43:35 +0000 +Message-ID: <20070613134336.13661.qmail@c61f4fed932273.315fe32.mid.smarden.org> + +* git-apply -R --whitespace=warn + +From: Daniel Barkalow +Message-ID: +Subject: Minor bug in git-apply's patch-cleaning + * gitk --left-right From: Linus Torvalds @@ -39,8 +80,6 @@ Repeated requests against git-daemon makes it stuck under --syslog [jc: does not reproduce easily for me; has anybody seen it?] -* Delegate gitweb part to somebody else. - * Use gitattributes for more things. - 'precious' files that are not tracked but not @@ -51,17 +90,11 @@ Repeated requests against git-daemon makes it stuck under --syslog another branch that has a file where the current branch has a directory could lose such 'precious' files. - - Customized "diff -p" markers per path (Johannes, on #git - 2007-04-30). - - I think it makes sense to give an extra parameter to xdiff - machinery to affect how "diff -p" markers are constructed (as - opposed to teach xdiff machinery to read gitattributes -- the - code does not have path information at that level). The - simplest interface would be to pass a regexp and have the - existing code always look for that regexp backwards. A more - complex one would involve a callback function, but I do not - know if that kind of complexity is worth it. + - Customized "diff -p" markers per path. + + From: Linus Torvalds + Subject: Re: [PATCH] Per-path attribute based hunk header selection. + Message-ID: - Others??? From 962753f75390f5c5ea23a2d1e6996f6027003478 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 7 Jul 2007 00:30:48 -0700 Subject: [PATCH 0257/2612] Retire Meta/TO Meta/git-topic.perl is better these days. --- TO | 181 ------------------------------------------------------------- 1 file changed, 181 deletions(-) delete mode 100755 TO diff --git a/TO b/TO deleted file mode 100755 index ad00b30651d467..00000000000000 --- a/TO +++ /dev/null @@ -1,181 +0,0 @@ -#!/bin/sh - -clean= next=next -branch=`git symbolic-ref HEAD` -while case $# in 0) break ;; esac -do - case "$1" in - --clean) - test refs/heads/master = "$branch" || { - echo >&2 Not on master - exit 1 - } - clean=t - ;; - --next) - test 2 -le $# || { - echo >&2 "Need argument" - exit 1 - } - next="$2" - git rev-parse --verify "$next" >/dev/null || exit - shift - ;; - *) - echo >&2 "$0 [--clean | --next test-next ]" - exit 1 - ;; - esac - shift -done - -master_sha1=`git rev-parse --verify refs/heads/master` -LF=' -' -(cd .git/refs/heads && find -type f) | -sed -n \ - -e 's/^\.\///' \ - -e '/^[^\/][^\/]\//p' | -sort | -while read topic -do - rebase= done= not_done= trouble= date= - topic_sha1=`git rev-parse --verify "refs/heads/$topic"` - is_current= - if test "refs/heads/$topic" = "$branch" - then - is_current=" *" - fi - - date=` - git-rev-list -1 --pretty "$topic" | - sed -ne 's/^Date: *\(.*\)/ (\1)/p' - ` - # (1) - only_next_1=`git-rev-list ^master "^$topic" ${next} | sort` - only_next_2=`git-rev-list ^master ${next} | sort` - if test "$only_next_1" = "$only_next_2" - then - not_in_topic=`git-rev-list "^$topic" master` - if test -z "$not_in_topic" - then - rebase=" (vanilla)" - else - rebase=" (can be rebased)" - fi - fi - - # (2) - not_in_master=` - git-rev-list ^master "$topic" - ` - test -z "$not_in_master" && - done="${LF}Fully merged -- delete." - - # (3) - not_in_next=` - git-rev-list --pretty=oneline ^${next} "$topic" | - sed -e 's/^[0-9a-f]* / - /' - ` - if test -n "$not_in_next" - then - if test -n "$done" - then - # If $topic and master are the same, - # it is fine. - test "$master_sha1" = "$topic_sha1" || - trouble="${LF}### MODIFIED AFTER COOKED ###" - fi - not_done="${LF}Still not merged in ${next}$rebase.$LF$not_in_next" - elif test -n "$done" - then - not_done= - else - not_done="${LF}Up to date." - fi - - echo "*** $topic ***$date$is_current$trouble$done$not_done" - - if test -z "$trouble$not_done" && - test -n "$done" && - test t = "$clean" - then - git branch -d "$topic" - fi -done - -exit - -################################################################ -Using Topic Branches - -Some important disciplines first. - - * Once a topic branch forks from "master", avoid merging "master" - updates into the topic branch unless necessary to resolve conflicts - early. - - * Once a topic branch is fully cooked and merged into "master", - delete it. If you need to build on top of it to correct - earlier mistakes, create a new topic branch by forking at the - tip of the "master". This is not strictly necessary, but it - makes it easier to keep your history simple. - - * Whenever you need to test or publish your changes to topic - branches, merge them into "next" branch. - -So, you would want to know: - -(1) ... if a topic branch has ever been merged to "next". Young - topic branches can have stupid mistakes you would rather - clean up, and things that have not been merged into other - branches can be easily rebased without affecting others. - -(2) ... if a topic branch has been fully merged to "master". - Then you can delete it. More importantly, you can tell you - should not build on top of it. - -(3) ... if a topic branch has commits unmerged to "next". You - need to merge them to test and/or publish. - -Let's look at this example: - - o---o---o---o---o---o---o---o---o---o "next" - / / / / - / a---a---b A / / - / / / / - / / c---c---c---c B / - / / / \ / - / / / b---b C \ / - / / / / \ / - ---o---o---o---o---o---o---o---o---o---o---o "master" - - -A, B and C are topic branches. - - * A has one fix since it was merged up to "next". - - * B has finished. It has been fully merged up to "master" and "next", - and is ready to be deleted. - - * C has not merged to "next" at all. - -To compute (1): - - git-rev-list ^master ^topic next - git-rev-list ^master next - - if these match, topic has not merged in next at all. - -To compute (2): - - git-rev-list master..topic - - if this is empty, it is fully merged to "master". - -To compute (3): - - git-rev-list next..topic - - if this is empty, there is nothing to merge to "next". - From 7ca3d9d71ff982965d6a9e5f0ee2492ce977cdae Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 24 Jul 2007 21:31:33 -0700 Subject: [PATCH 0258/2612] TODO updates --- TODO | 87 +++++------------------------------------------------------- 1 file changed, 6 insertions(+), 81 deletions(-) diff --git a/TODO b/TODO index 95dfc6fec0d279..688b8f3deff86a 100644 --- a/TODO +++ b/TODO @@ -14,34 +14,6 @@ to pick an item from the list and work on it. Recent issues ------------- -* gitweb patches (bunch of them) - -From: Matt McCutchen -Subject: [PATCH] gitweb: snapshot cleanups & support for offering multiple formats -Message-ID: <1183053733.6108.0.camel@mattlaptop2> - -Subject: [PATCH] gitweb: make search form generate pathinfo-style URLs -Message-ID: <1183057027.6108.4.camel@mattlaptop2> - -Subject: [PATCH] gitweb: make "No commits" in project list gray, not bold green -Message-ID: <1183068922.6108.8.camel@mattlaptop2> - -From: Miklos Vajna -Subject: [PATCH] gitweb: prefer git_get_project_owner() over get_file_owner() -Message-ID: <20070703221122.GI32766@genesis.frugalware.org> - -From: Michael Hendricks -Subject: [PATCH] gitweb: configurable width for the projects list Description column -Message-ID: <11835958082458-git-send-email-michael@ndrix.org> - - -* switching branches when b changes between symlink and directory in a/b/c - -From: Pierre Habouzit -Subject: [BUG (or misfeature?)] git checkout and symlinks -Message-ID: <20070704203541.GA13286@artemis.corp> - - * cherry-pick unexpected conflicts From: Gerrit Pape @@ -49,18 +21,14 @@ Subject: Re: unexpected git-cherry-pick conflict Date: Wed, 13 Jun 2007 13:43:35 +0000 Message-ID: <20070613134336.13661.qmail@c61f4fed932273.315fe32.mid.smarden.org> -* git-apply -R --whitespace=warn +* 3way merge still has D/F conflict problems -From: Daniel Barkalow -Message-ID: -Subject: Minor bug in git-apply's patch-cleaning +Subject: [RFH] 3way still has D/F conflict problems... +Date: Mon, 23 Jul 2007 00:22:51 -0700 +Message-ID: <7vejizmvn8.fsf@assigned-by-dhcp.cox.net> -* gitk --left-right - -From: Linus Torvalds -Message-ID: -From: Junio C Hamano -Message-ID: <7vabwifl23.fsf@assigned-by-dhcp.cox.net> +I am punting on unpack-trees related D/F issues for 1.5.3. We +might end up rewriting read-tree after the release. * Pushing into a non-bare repository more gracefully. @@ -90,12 +58,6 @@ Repeated requests against git-daemon makes it stuck under --syslog another branch that has a file where the current branch has a directory could lose such 'precious' files. - - Customized "diff -p" markers per path. - - From: Linus Torvalds - Subject: Re: [PATCH] Per-path attribute based hunk header selection. - Message-ID: - - Others??? @@ -162,43 +124,6 @@ Technical (milder) Technical (trivial) ------------------- -* Change the "first line of commit message is special" rule to - "first paragraph" and then wrap it. - - From: Junio C Hamano - Message-ID: <7vsla5pkug.fsf@assigned-by-dhcp.cox.net> - - This is slightly related, but I have been wondering about the - interaction with "single-liner summary, empty line and then the - rest" convention and various commands in the log family. - - Currently, --pretty=oneline and --pretty=email (hence format-patch) - take and use only the first line. I think we could change it to: - - - take the first paragraph, where the definition of the first - paragraph is "skip all blank lines from the beginning, and - then grab everything up to the next empty line". - - - replace all line breaks with a whitespace. - - This change would not affect well-behaved commit messages that - adhere to the convention, as their first paragraph always - consist of a single line. On the other hand, people from - different culture can get frustrated by their commit message - chomped at the first linebreak in the middle of sentence right - now, which would be helped by this change. - - Their Subject: and --pretty=oneline output would become very - long and unsightly, but their commit messages are already - ugly anyway, and such a change at least avoid the loss of - information. - - If we were to do this, Subject: line would most likely use - RFC2822 line folding at the places where line breaks were in the - original, but that goes without saying. - - What do people think? - * Give --stdin to git-log, similar to git-rev-list From: "Marco Costalba" From 57ba2e2f7f658ed415326a144d48759c1f4ba473 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 24 Jul 2007 21:32:31 -0700 Subject: [PATCH 0259/2612] Meta/Summary: a bit of reformat --- Summary | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Summary b/Summary index 84c713e900d436..c8943dbd98f417 100755 --- a/Summary +++ b/Summary @@ -6,7 +6,7 @@ trap 'rm -f $tmp-*' 0 since="$1" until="$2" -git-rev-list --no-merges --since="$1" --until="$2" master >"$tmp-0.txt" +git-rev-list --no-merges "^master@{$1}" "master@{$2}" >"$tmp-0.txt" top=$(head -n 1 "$tmp-0.txt") bottom=$(tail -n 1 "$tmp-0.txt") @@ -32,5 +32,5 @@ Changes during this period are as follows: EOF -git shortlog --no-merges $bottom..$top +git shortlog -w72,2,4 --no-merges $bottom..$top From 45da69e3346bc4945833d62731e029b74ad8e0d8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 24 Jul 2007 21:33:17 -0700 Subject: [PATCH 0260/2612] Meta/docbuild-8: make it easier to compare AsciiDoc 7 and 8 output --- docbuild-8.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/docbuild-8.sh b/docbuild-8.sh index f854fdfad07ca3..4c7b738788b4e0 100755 --- a/docbuild-8.sh +++ b/docbuild-8.sh @@ -1,6 +1,18 @@ #!/bin/sh -PATH=~/asciidoc/bin:$PATH \ -make prefix=/var/tmp/asciidoc8 \ - WEBDOC_DEST=/var/tmp/asciidoc8/webdoc \ +case "$1" in +7) + V=7 + EXTRA= + ;; +8 | '') + V=8 + PATH=~/asciidoc/bin:$PATH + EXTRA=ASCIIDOC8=YesPlease + ;; +esac + +make prefix=/var/tmp/asciidoc$V \ + WEBDOC_DEST=/var/tmp/asciidoc$V/webdoc \ + $EXTRA \ install install-webdoc From 62e619caae70f61a207e794cf544bff3ebfe88ce Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 27 Jul 2007 17:22:34 -0700 Subject: [PATCH 0261/2612] Minor copyediting of MaintNotes --- MaintNotes | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/MaintNotes b/MaintNotes index 8bf0352adf2b4a..5baae133e2e4a9 100644 --- a/MaintNotes +++ b/MaintNotes @@ -78,14 +78,16 @@ could occasionally be minor breakages or brown paper bag bugs but they are not expected to be anything major. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was v1.5.2 done on May 20th this year. +last such release was v1.5.2 done on May 20th this year. You +can expect that the tip of the "master" branch is always as +stable as any of the released versions, if not more stable. Whenever a feature release is made, "maint" branch is forked off from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was v1.5.1.6. +release they are updates to; the last such release was v1.5.2.4. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. @@ -116,6 +118,8 @@ but is expected to work more or less without major breakage. I usually use "next" version of git for my own work, so it cannot be _that_ broken to prevent me from pushing the changes out. The "next" branch is where new and exciting things take place. +Note that being in "next" does not mean the change will be in +the next feature release. The above three branches, "master", "maint" and "next" are never rewound, so you should be able to safely track them (this @@ -125,7 +129,9 @@ are interested in from the output of "git log next"). The "pu" (proposed updates) branch bundles all the remainder of topic branches. The "pu" branch, and topic branches that are -only in "pu", are subject to rebasing in general. +only in "pu", are subject to rebasing in general. By the above +definition of how "next" works, you can tell that this branch +will contain quite experimental and obviously broken stuff. When a topic that was in "pu" proves to be in testable shape, it graduates to "next". I do this with: @@ -134,11 +140,11 @@ graduates to "next". I do this with: git merge that-topic-branch Sometimes, an idea that looked promising turns out to be not so -hot and the topic can be dropped from "pu" in such a case. +good and the topic can be dropped from "pu" in such a case. A topic that is in "next" is expected to be tweaked and fixed to perfection before it is merged to "master" (that's why "master" -can be expected to stay very stable). Similarly to the above I +can be expected to stay very stable). Similarly to the above, I do it with this: git checkout master From 90cbd568735e533c1f3a3abbe387632290ce0baf Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 3 Aug 2007 16:14:08 -0700 Subject: [PATCH 0262/2612] Publish testing RPMs --- DoKernelOrg | 18 +++++++++++++---- prep-maint.txt | 52 ++++++++++++++++++++++++++++--------------------- prep-master.txt | 24 ++++++++++++----------- 3 files changed, 57 insertions(+), 37 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 0b35864216960c..872fa8fc24396b 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -83,8 +83,20 @@ maint | master) ln -f git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. ;; esac >>./:all.log 2>&1 && - case "$NO_RPM_PLEASE" in - '') + case "$V" in + *.rc[0-9]*) + mkdir -p $G/testing && + for a in $narch + do + for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm + do + test -f "$rr" || continue + ln -f "$rr" $G/testing/. + done + done && + ln -f $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/testing/. + ;; + *) mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && for a in $narch do @@ -105,8 +117,6 @@ maint | master) /usr/local/bin/yummy $G/RPMS/SRPMS : } >>./:all.log 2>&1 ;; - *) - echo Skipping RPM ;; esac && make clean && diff --git a/prep-maint.txt b/prep-maint.txt index 83dbea48c11b26..8641f5ee15b70b 100644 --- a/prep-maint.txt +++ b/prep-maint.txt @@ -1,54 +1,62 @@ -diff --git a/Documentation/RelNotes-1.5.2.3.txt b/Documentation/RelNotes-1.5.2.3.txt +diff --git a/Documentation/RelNotes-1.5.2.4.txt b/Documentation/RelNotes-1.5.2.4.txt new file mode 100644 -index 0000000..6ba264d +index 0000000..a46b495 --- /dev/null -+++ b/Documentation/RelNotes-1.5.2.3.txt -@@ -0,0 +1,26 @@ -+GIT v1.5.2.3 Release Notes ++++ b/Documentation/RelNotes-1.5.2.4.txt +@@ -0,0 +1,34 @@ ++GIT v1.5.2.4 Release Notes +========================== + -+Fixes since v1.5.2.2 ++Fixes since v1.5.2.3 +-------------------- + + * Bugfixes + -+ - Version 2 pack index format was introduced in version 1.5.2 -+ to support pack files that has offset that cannot be -+ represented in 32-bit. The runtime code to validate such -+ an index mishandled such an index for an empty pack. ++ - "git-gui" bugfixes, including a handful fixes to run it ++ better on Cygwin/MSYS. + -+ - Commit walkers (most notably, fetch over http protocol) -+ tried to traverse commit objects contained in trees (aka -+ subproject); they shouldn't. ++ - "git checkout" failed to switch back and forth between ++ branches, one of which has "frotz -> xyzzy" symlink and ++ file "xyzzy/filfre", while the other one has a file ++ "frotz/filfre". ++ ++ - "git prune" used to segfault upon seeing a commit that is ++ referred to by a tree object (aka "subproject"). ++ ++ - "git diff --name-status --no-index" mishandled an added file. ++ ++ - "git apply --reverse --whitespace=warn" still complained ++ about whitespaces that a forward application would have ++ introduced. + + * Documentation Fixes and Updates + -+ - git-config --regexp was not documented properly. ++ - A handful documentation updates. + -+-- ++-- +exec >/var/tmp/1 -+O=v1.5.2.2-11-gb833651 ++O=v1.5.2.3-24-gec0603e +echo O=`git describe refs/heads/maint` +git shortlog --no-merges $O..refs/heads/maint diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN -index 3c3cd2f..5c6d2b2 100755 +index 5c6d2b2..a318baa 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE --DEF_VER=v1.5.2.2.GIT -+DEF_VER=v1.5.2.3.GIT +-DEF_VER=v1.5.2.3.GIT ++DEF_VER=v1.5.2.4.GIT LF=' ' diff --git a/RelNotes b/RelNotes -index 61f9778..a1c82a8 120000 +index a1c82a8..1f6c16e 120000 --- a/RelNotes +++ b/RelNotes @@ -1 +1 @@ --Documentation/RelNotes-1.5.2.2.txt +-Documentation/RelNotes-1.5.2.3.txt \ No newline at end of file -+Documentation/RelNotes-1.5.2.3.txt ++Documentation/RelNotes-1.5.2.4.txt \ No newline at end of file diff --git a/prep-master.txt b/prep-master.txt index e45631ac83159d..66f01712ea81de 100644 --- a/prep-master.txt +++ b/prep-master.txt @@ -1,13 +1,15 @@ -diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN -index 06c360b..3c0032c 100755 ---- a/GIT-VERSION-GEN -+++ b/GIT-VERSION-GEN -@@ -1,7 +1,7 @@ - #!/bin/sh +diff --git a/Documentation/RelNotes-1.5.3.txt b/Documentation/RelNotes-1.5.3.txt +index 03d1843..6f5d14f 100644 +--- a/Documentation/RelNotes-1.5.3.txt ++++ b/Documentation/RelNotes-1.5.3.txt +@@ -47,8 +47,8 @@ Updates since v1.5.2 + renaming history of a single file. - GVF=GIT-VERSION-FILE --DEF_VER=v1.5.2.GIT -+DEF_VER=v1.5.3.GIT + - "git-filter-branch" lets you rewrite the revision history of +- the current branch, creating a new branch. You can specify a +- number of filters to modify the commits, files and trees. ++ specified branches. You can specify a number of filters to ++ modify the commits, files and trees. - LF=' - ' + - "git-cvsserver" learned new options (--base-path, --export-all, + --strict-paths) inspired by git-daemon. From cc5e0089064dcec4c70401cf0ba66ca69d1b5da5 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 15 Aug 2007 00:16:24 -0700 Subject: [PATCH 0263/2612] MaintNotes: we now carry html and man at repo.or.cz --- MaintNotes | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/MaintNotes b/MaintNotes index 5baae133e2e4a9..abd866bfa15253 100644 --- a/MaintNotes +++ b/MaintNotes @@ -41,8 +41,7 @@ also push into an alternate here: git://repo.or.cz/alt-git.git/ -Impatient people would have better luck with the latter one, but it -does not have "html" and "man" branches (described below). +Impatient people would have better luck with the latter one. There are three branches in git.git repository that are not about the source tree of git: "todo", "html" and "man". The From d341164737d6d3527045fb3b6a6cfc358d0ec396 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 15 Aug 2007 16:57:26 -0700 Subject: [PATCH 0264/2612] MaintNotes: 1.5.2.5 is out --- MaintNotes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintNotes b/MaintNotes index abd866bfa15253..70e69c17dbe8b8 100644 --- a/MaintNotes +++ b/MaintNotes @@ -86,7 +86,7 @@ from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was v1.5.2.4. +release they are updates to; the last such release was v1.5.2.5. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. From aced37466bf631c10726b12d7230bc3cd9bde7b1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 29 Aug 2007 01:33:21 -0700 Subject: [PATCH 0265/2612] Add gitweb addresses to MaintNotes --- MaintNotes | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/MaintNotes b/MaintNotes index 70e69c17dbe8b8..6f0c68ebe31b4f 100644 --- a/MaintNotes +++ b/MaintNotes @@ -43,6 +43,11 @@ also push into an alternate here: Impatient people would have better luck with the latter one. +Their gitweb interfaces are found at: + + http://git.kernel.org/?p=git/git.git + http://repo.or.cz/w/alt-git.git + There are three branches in git.git repository that are not about the source tree of git: "todo", "html" and "man". The first one was meant to contain TODO list for me, but I am not From 6c950dd3fa6851d9e33ab3020a5474e1730160d5 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 29 Aug 2007 01:33:37 -0700 Subject: [PATCH 0266/2612] Redo Summary script to use reflog fully --- Summary | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Summary b/Summary index c8943dbd98f417..60976cd444b249 100755 --- a/Summary +++ b/Summary @@ -6,9 +6,9 @@ trap 'rm -f $tmp-*' 0 since="$1" until="$2" -git-rev-list --no-merges "^master@{$1}" "master@{$2}" >"$tmp-0.txt" -top=$(head -n 1 "$tmp-0.txt") -bottom=$(tail -n 1 "$tmp-0.txt") +git-rev-list --no-merges "master@{$1}..master@{$2}" >"$tmp-0.txt" +top="master@{$until}" +bottom="master@{$since}" num_patches=$(git rev-list --no-merges $bottom..$top | wc -l) git shortlog -s -n --no-merges $bottom..$top >"$tmp-0.txt" From f9403674a9dc3b798e6128c8fd96d0c0345816d3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 31 Aug 2007 01:25:03 -0700 Subject: [PATCH 0267/2612] Update "A Note from the Maintainer" waiting for 1.5.3 release --- MaintNotes | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/MaintNotes b/MaintNotes index 6f0c68ebe31b4f..e9cdad0dd9a1f1 100644 --- a/MaintNotes +++ b/MaintNotes @@ -41,7 +41,7 @@ also push into an alternate here: git://repo.or.cz/alt-git.git/ -Impatient people would have better luck with the latter one. +Impatient people might have better luck with the latter one. Their gitweb interfaces are found at: @@ -82,7 +82,7 @@ could occasionally be minor breakages or brown paper bag bugs but they are not expected to be anything major. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was v1.5.2 done on May 20th this year. You +last such release was v1.5.3 done on Sep 1st this year. You can expect that the tip of the "master" branch is always as stable as any of the released versions, if not more stable. @@ -206,10 +206,19 @@ relying on heavily: - Eric Wong on git-svn. - - Jakub Narebski, Peter Baudis, and Luben Tuikov on gitweb. + - Jakub Narebski, Petr Baudis, and Luben Tuikov on gitweb. - J. Bruce Fields on documentaton issues. + - Johannes Schindelin and Johannes Sixt for their effort to + move things forward on the Windows front. Although my + repository does not have much from the effort of MinGW team, + I expect a merge into mainline will happen so that everybody + can work from the same codebase. + + - People on non-Linux platforms for keeping their eyes on + portability; especially, Randal Schwartz, Theodore Ts'o, + Jason Riedy, Thomas Glanzmann, but countless others as well. * This document From 37b828306785afdbe6cc31c35379186313374728 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 1 Sep 2007 17:53:46 -0700 Subject: [PATCH 0268/2612] Minor TODO updates --- TODO | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/TODO b/TODO index 688b8f3deff86a..9c6f60359cfca1 100644 --- a/TODO +++ b/TODO @@ -93,7 +93,7 @@ other things I think are needed in my response: Technical (milder) ------------------ -* add 'tree' entries to the index. +* perhaps add 'tree' entries to the index. From: Junio C Hamano Message-ID: <11793556371774-git-send-email-junkio@cox.net> @@ -111,8 +111,6 @@ Technical (milder) * daemon --strict-symlink. -* Maybe grok PGP signed text/plain in applymbox as well. - * "git fetch" should be able to use foreign SCM import backends such as svnimport and cvsimport. @@ -121,13 +119,20 @@ Technical (milder) From: Junio C Hamano Message-ID: <11793556371774-git-send-email-junkio@cox.net> +* Maybe grok PGP signed text/plain in mailinfo as well. + + Technical (trivial) ------------------- * Give --stdin to git-log, similar to git-rev-list -From: "Marco Costalba" -Message-ID: + From: "Marco Costalba" + Message-ID: + +[jc: but why is it needed? shouldn't we be using rev-list plumbing, + and if not perhaps rev-list needs to learn something log knows + how to do?] * Update the lockfile protocol so that closing and renaming are done inside lockfile commit time. Some filesystems do not From 9606558a82dfc4000099750e367aa061b87ef715 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 1 Sep 2007 23:09:58 -0700 Subject: [PATCH 0269/2612] Update MaintNotes (A note from the maintainer) --- MaintNotes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintNotes b/MaintNotes index e9cdad0dd9a1f1..5ec4b58a4404c0 100644 --- a/MaintNotes +++ b/MaintNotes @@ -82,7 +82,7 @@ could occasionally be minor breakages or brown paper bag bugs but they are not expected to be anything major. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was v1.5.3 done on Sep 1st this year. You +last such release was v1.5.3 done on Sep 2nd this year. You can expect that the tip of the "master" branch is always as stable as any of the released versions, if not more stable. From ecf61a81ff2be41e6415add1a155636f8ccf391c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 1 Sep 2007 23:10:57 -0700 Subject: [PATCH 0270/2612] (prep-master) empty it out after a release. --- prep-master.txt | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/prep-master.txt b/prep-master.txt index 66f01712ea81de..c71d83bc50290a 100644 --- a/prep-master.txt +++ b/prep-master.txt @@ -1,15 +1,5 @@ -diff --git a/Documentation/RelNotes-1.5.3.txt b/Documentation/RelNotes-1.5.3.txt -index 03d1843..6f5d14f 100644 ---- a/Documentation/RelNotes-1.5.3.txt -+++ b/Documentation/RelNotes-1.5.3.txt -@@ -47,8 +47,8 @@ Updates since v1.5.2 - renaming history of a single file. - - - "git-filter-branch" lets you rewrite the revision history of -- the current branch, creating a new branch. You can specify a -- number of filters to modify the commits, files and trees. -+ specified branches. You can specify a number of filters to -+ modify the commits, files and trees. - - - "git-cvsserver" learned new options (--base-path, --export-all, - --strict-paths) inspired by git-daemon. +-- +exec >/var/tmp/1 +O=v1.5.3 +echo O=`git describe refs/heads/master` +git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint From 94b210e14d4accaaf0ce6729aa25afe23765a2e8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 30 Oct 2007 01:29:24 -0700 Subject: [PATCH 0271/2612] Meta/Make: drop -pedantic --- Make | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Make b/Make index 389ca28a9d5e8b..6f5c76f8aacfef 100755 --- a/Make +++ b/Make @@ -45,7 +45,8 @@ do $old_style_def_fix) o=-Wold-style-definition ;; esac - O="$O -Werror -Wall $o -ansi -pedantic -std=c99" + O="$O -Werror $o -std=c99 -Wno-pointer-to-int-cast" + O="$O -fwrapv -fno-strict-overflow" ;; --) shift From 5c031573a75b1228461c9e9a5d717d01849abb39 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 30 Oct 2007 01:30:08 -0700 Subject: [PATCH 0272/2612] Meta/RP: Replace patch series --- RP | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 RP diff --git a/RP b/RP new file mode 100755 index 00000000000000..917cca2f16d3a5 --- /dev/null +++ b/RP @@ -0,0 +1,73 @@ +#!/bin/sh +# Replace patch series + +usage="$0 branch [base-branch] &2 "still in the middle of rebase/am" + exit 1 +fi + +case "$#,$1" in +1,--continue) + ;; +*) + rm -f .rp-state + target_branch="$1" + case $# in + 1) + base_branch=master + ;; + 2) + base_branch=$(git-rev-parse --verify "$2") || exit + ;; + *) + echo >&2 "$usage" + exit 1 + ;; + esac + + # find branch point + branch_point=$(git merge-base "$base_branch" "$target_branch") || { + echo >&2 "failed to compute the branch point" + exit 1 + } + + # safety -- never rewind/replace what's merged to next + in_branch=$(git rev-list $branch_point..$target_branch) && + not_in_next=$(git rev-list $branch_point..$target_branch ^next) && + test "z$in_branch" = "z$not_in_next" || { + echo >&2 "should not be rewinding part of $target_branch that is already in next" + exit 1 + } + + # detach the HEAD + git checkout "$branch_point" || { + echo >&2 "detaching the head at $branch_point" + exit 1 + } + + { + echo "target_branch=$target_branch" + echo "branch_point=$branch_point" + } >.rp-state + # apply patches + git am -3 -s -u || { + echo >&2 "finish the am and say $0 --continue" + exit 1 + } + ;; +esac + +branch_point=$(sed -ne 's/^branch_point=//p' .rp-state) && +target_branch=$(sed -ne 's/^target_branch=//p' .rp-state) || { + echo >&2 "no replace-patch session" + exit 1 +} +rm -f .rp-state + +git branch -f "$target_branch" HEAD +git checkout "$target_branch" +git -p show-branch "$target_branch@{1}" "$target_branch" +git diff --stat -p "$target_branch@{1}" "$target_branch" From 4676c4b72b15da22be140244b1aceeb8df92f6b2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 30 Oct 2007 01:30:46 -0700 Subject: [PATCH 0273/2612] Meta/SE: use msmtp and set envelope sender --- SE | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SE b/SE index 449d976c5aa9fb..82b71af441526e 100755 --- a/SE +++ b/SE @@ -1,9 +1,10 @@ #!/bin/sh me='Junio C Hamano ' -smtp='smtp.west.cox.net' +smtp='/usr/bin/msmtp' to='git@vger.kernel.org' +#to='junkio@cox.net' #smtp=/var/tmp/smtp-server while case $# in 0) break ;; esac @@ -25,10 +26,9 @@ done git-send-email \ --from="$me" \ - --no-chain-reply-to \ + --envelope-sender="$me" \ --to="$to" \ --suppress-from \ - --no-signed-off-cc \ --smtp-server=$smtp \ $dryrun \ "$@" From 90f98a4f32bdf3b6424c37f77e9ab507d6c2d930 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 30 Oct 2007 01:31:15 -0700 Subject: [PATCH 0274/2612] Meta/WC, Meta/WI: drop extra headers. --- WC | 3 --- WI | 3 --- 2 files changed, 6 deletions(-) diff --git a/WC b/WC index 15afe2372179af..5391f7b1ac8abf 100755 --- a/WC +++ b/WC @@ -6,12 +6,9 @@ next_at=$(git rev-parse --verify refs/heads/next) cat < Subject: What's cooking in git.git (topics) X-master-at: $master_at X-next-at: $next_at -Content-Type: text/plain; charset=utf-8 -Content-Transfer-Encoding: 8bit Here are the topics that have been cooking. Commits prefixed with '-' are only in 'pu' while commits prefixed with '+' are diff --git a/WI b/WI index f065b8979a299c..99becb1a03f19a 100755 --- a/WI +++ b/WI @@ -8,12 +8,9 @@ log () { git shortlog -w70,2,6 --no-merges "$@" } -echo "From: Junio C Hamano " echo "Subject: What's in git.git (stable)" echo "X-maint-at: $maint_at" echo "X-master-at: $master_at" -echo "Content-Type: text/plain; charset=utf-8" -echo "Content-Transfer-Encoding: 8bit" tagged=`git rev-parse --not --verify hold/sa/maint` list=`git-rev-list $tagged refs/heads/maint 2>/dev/null` From 29a0ea8c0dca3d4b2f2cc6365c1a213695e0a27f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 8 Nov 2007 02:02:59 -0800 Subject: [PATCH 0275/2612] dodoc: squelch transfer status output --- dodoc.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dodoc.sh b/dodoc.sh index 78cfad32409d60..826b039fdf487d 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -40,8 +40,10 @@ DOCREPO=`pwd` tmp=`pwd`/.doctmp-$$ trap 'rm -f "$tmp".*' 0 -git pull "$MASTERREPO" master && -git fetch --tags "$MASTERREPO" || exit $? +( + git pull "$MASTERREPO" master && + git fetch --tags "$MASTERREPO" +) >/dev/null 2>/dev/null || exit $? test $(git-rev-parse --verify refs/heads/master) == "$ID" && NID=$(git-describe --abbrev=4 "$ID") && test '' != "$NID" || exit $? @@ -118,7 +120,8 @@ do if git commit -a -m "Autogenerated $TYPE for $NID" then - git send-pack "$MASTERREPO" master:refs/heads/$type + git send-pack "$MASTERREPO" master:refs/heads/$type \ + >/dev/null 2>&1 else echo "* No changes in $type docs" fi From 677f31c8971d17b9c807728f79f36cc12d483a44 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Nov 2007 01:05:33 -0800 Subject: [PATCH 0276/2612] Make customization of Gitweb test scaffolding a bit easier. --- Gitweb | 55 ++++++++++++++----------------------------------------- 1 file changed, 14 insertions(+), 41 deletions(-) diff --git a/Gitweb b/Gitweb index 97afbd85c9d0cd..ac6944885b3e45 100755 --- a/Gitweb +++ b/Gitweb @@ -6,28 +6,14 @@ cd gitweb && DEST=`cd ../../index && /bin/pwd` || exit differs= +rsrc='gitweb.cgi gitweb.css git-favicon.png blame.js' -if test -f "$DEST/gitweb.cgi" -then - diff -u "$DEST/gitweb.cgi" gitweb.cgi || differs="g$differs" -else - differs="g$differs" -fi +for r in $rsrc +do -if test -f "$DEST/gitweb.css" -then - diff -u "$DEST/gitweb.css" gitweb.css || differs="s$differs" -else - differs="s$differs" -fi - -if test -f "$DEST/git-favicon.png" -then - cmp "$DEST/git-favicon.png" git-favicon.png >/dev/null || - differs="i$differs" -else - differs="i$differs" -fi + test -f "$DEST/$r" && diff -u "$DEST/$r" "$r" && continue + differs="$differs$r " +done case "$differs" in '') @@ -51,24 +37,11 @@ case "$differs" in esac esac -case "$differs" in -*g*) - rm -f "$DEST/gitweb.cgi" - cp gitweb.cgi "$DEST/gitweb.cgi" - chmod +x "$DEST/gitweb.cgi" - ;; -esac - -case "$differs" in -*s*) - rm -f "$DEST/gitweb.css" - cp gitweb.css "$DEST/gitweb.css" - ;; -esac - -case "$differs" in -*i*) - rm -f "$DEST/git-favicon.png" - cp git-favicon.png "$DEST/git-favicon.png" - ;; -esac +for r in $differs +do + cp "$r" "$DEST/$r" + case "$r" in + gitweb.cgi) + chmod +x "$DEST/$r" + esac +done From 5a3846f699f9a16b2e2ff4ad5b86cdd522c0f418 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Nov 2007 01:22:10 -0800 Subject: [PATCH 0277/2612] Add UWC script to help maintaining What's Cooking messages --- UWC | 219 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ WC | 2 +- 2 files changed, 220 insertions(+), 1 deletion(-) create mode 100755 UWC diff --git a/UWC b/UWC new file mode 100755 index 00000000000000..16597159e9046c --- /dev/null +++ b/UWC @@ -0,0 +1,219 @@ +#!/usr/bin/perl -w +# +# Update an older edition of What's Cooking with the latest data. +# +# Usage: UWC [ old [ new ] ] +# +# Giving no parameter is the same as giving a single "-" to the command. +# +# The command reads the old edition of (annotated) "What's Cooking" +# message from "old", and "new". If "old" is "-", it is read from +# the standard input. If "new" is not specified, WC script is run +# and its output is used. +# +# An annotated "What's Cooking" message can have group header (a line +# that has the group name enclosed in "[" and "]"), and annotatation +# paragraphs after each topic's commit list, in addition to the bare +# "WC" output. +# +# The group headers, topics in each group and their order in the group, +# and annotation to topics are preserved from the "old" message. The +# list of commits in each topic is replaced with the one taken from the +# "new" message. Any topic in "new" that did not exist in "old" appear +# in "New Topics" group. Also, topics that do not appear in the "new" +# message are marked with <>, topics whose commit list are +# different from "old" are marked with <>>. +# +# Typically the maintainer would place the What's Cooking message +# previously sent in a buffer in Emacs, and filter the buffer contents +# with this script, to prepare an up-to-date message. + +sub parse_whats_cooking { + my ($fh) = @_; + my $head = undef; + my $group = undef; + my %wc = ("group list" => [], "topic hash" => {}); + my $topic; + my $skipping_comment = 0; + + while (<$fh>) { + if (/^-{40,}$/) { + # Group separator + next; + } + + if (!defined $head) { + if (/^Here are the topics that have been cooking\./) { + $head = $_; + } + next; + } + + if (/^<<.*>>$/) { + next; + } + + if ($skipping_comment) { + if (/^>>$/) { + $skipping_comment = 0; + } + next; + } + + if (!$skipping_comment && /^< $1, + head => $_, + names => "", + text => "", + }; + $wc{"topic hash"}{$topic->{"topic"}} = $topic; + push @{$wc{" $group"}}, $topic; + next; + } + + if (/^ [-+.?] / || /^ \S/) { + $topic->{"names"} .= $_; + next; + } + $topic->{"text"} .= $_; + } + + for ($head) { + s/\A\s+//s; + s/\s+\Z//s; + } + $wc{"head text"} = $head; + for $topic (values %{$wc{"topic hash"}}) { + for ($topic->{"text"}) { + s/\A\s+//s; + s/\s+\Z//s; + } + } + return \%wc; +} + +sub print_whats_cooking { + my ($wc) = @_; + + print $wc->{"head text"}, "\n"; + + for my $group (@{$wc->{"group list"}}) { + print "\n", "-" x 64, "\n"; + print "[$group]\n"; + for my $topic (@{$wc->{" $group"}}) { + print "\n", $topic->{"head"}; + print $topic->{"names"}; + if ($topic->{"text"} ne '') { + print "\n", $topic->{"text"}, "\n"; + } + } + } +} + +sub delete_topic { + my ($wc, $topic) = @_; + $topic->{"status"} = "deleted"; +} + +sub merge_whats_cooking { + my ($old_wc, $new_wc) = @_; + my $group; + + for $group (@{$old_wc->{"group list"}}) { + for my $topic (@{$old_wc->{" $group"}}) { + my $name = $topic->{"topic"}; + my $newtopic = delete $new_wc->{"topic hash"}{$name}; + + if (!defined $newtopic) { + $topic->{"names"} = ""; + $topic->{"text"} = "<>"; + next; + } + if (($newtopic->{"names"} ne $topic->{"names"}) || + ($newtopic->{"head"} ne $topic->{"head"})) { + my $text = ("<{"head"} . + $topic->{"names"} . ">>"); + + if ($topic->{"text"} ne '') { + $text .= "\n\n" . $topic->{"text"}; + } + for ($text) { + s/\A\s+//s; + s/\s+\Z//s; + } + $topic->{"text"} = $text; + $topic->{"names"} = $newtopic->{"names"}; + $topic->{"head"} = $newtopic->{"head"}; + } + } + } + + if (%{$new_wc->{"topic hash"}}) { + $group = "New Topics"; + if (!exists $old_wc->{" $group"}) { + unshift @{$old_wc->{"group list"}}, $group; + $old_wc->{" $group"} = []; + } + for my $topic (values %{$new_wc->{"topic hash"}}) { + my $name = $topic->{"topic"}; + $old_wc->{"topic hash"}{$name} = $topic; + push @{$old_wc->{" $group"}}, $topic; + $topic->{"text"} = $topic->{"text"}; + } + } +} + +if (@ARGV == 0) { + @ARGV = ('-'); +} +if (@ARGV != 2 && @ARGV != 1) { + die "Usage: $0 old [new]\n"; +} + +my ($old_wc, $new_wc); + +if ($ARGV[0] eq '-') { + *FH = *STDIN; +} else { + open FH, "$ARGV[0]"; +} +$old_wc = parse_whats_cooking(\*FH); +close FH; + +if (@ARGV > 1) { + open FH, "$ARGV[1]"; +} else { + open FH, "Meta/WC |"; +} +$new_wc = parse_whats_cooking(\*FH); +close FH; + +merge_whats_cooking($old_wc, $new_wc); +print_whats_cooking($old_wc); diff --git a/WC b/WC index 5391f7b1ac8abf..ba5825a06f6b4f 100755 --- a/WC +++ b/WC @@ -17,4 +17,4 @@ order. EOF -Meta/git-topic.perl --base=master | sed -e 's/^\*./*/' +Meta/git-topic.perl --base=master | sed -e 's/^\*./\n*/' From f225e1a93f302f7b16463025776bd797ce6e9d82 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 13 Nov 2007 01:24:58 -0800 Subject: [PATCH 0278/2612] git-topic: drop merges by default --- git-topic.perl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/git-topic.perl b/git-topic.perl index 40e16d3475d044..f875d0d5d81c83 100755 --- a/git-topic.perl +++ b/git-topic.perl @@ -11,6 +11,7 @@ my @stage = qw(next pu); my @mark = ('.', '?', '-', '+'); my $all = 0; +my $merges = 0; my @custom_stage; my @custom_mark; @@ -18,16 +19,18 @@ "base=s" => \$base, "stage=s" => \@custom_stage, "mark=s" => \@custom_mark, + "merges!" => \$merges, "all!" => \$all) or die; if (@custom_stage) { @stage = @custom_stage; } if (@custom_mark) { @mark = @custom_mark; } +my @nomerges = $merges ? qw(--no-merges) : (); sub read_revs_short { my (@args) = @_; my @revs; - open(REVS, '-|', qw(git rev-list --no-merges), @args) + open(REVS, '-|', qw(git rev-list), @nomerges, @args) or die; while () { chomp; @@ -40,7 +43,7 @@ sub read_revs_short { sub read_revs { my ($bottom, $top, $mask) = @_; my @revs; - open(REVS, '-|', qw(git rev-list --pretty=oneline --no-merges), + open(REVS, '-|', qw(git rev-list --pretty=oneline), @nomerges, "$bottom..$top") or die; while () { From fef78376bbf126507184f3e2b0d1ff51b8eebfd9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 24 Nov 2007 20:52:05 -0800 Subject: [PATCH 0279/2612] dodoc: mark the end to make "tail -f" easier to read --- dodoc.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dodoc.sh b/dodoc.sh index 826b039fdf487d..babafb27af323d 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -141,3 +141,7 @@ else echo "* No public html at $PUBLIC" fi || exit $? +echo ' + +*** ALL DONE *** +' >>./:html.log From 6e16186c8f1fdb889b866d68a694724e42e97463 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 1 Dec 2007 13:39:12 -0800 Subject: [PATCH 0280/2612] Announce: maintain bcc: list --- Announce | 1 + 1 file changed, 1 insertion(+) diff --git a/Announce b/Announce index 24d1e276bc72b7..6541ee6cf937d8 100755 --- a/Announce +++ b/Announce @@ -21,6 +21,7 @@ esac echo "To: git@vger.kernel.org cc: linux-kernel@vger.kernel.org +bcc: info@lwn.net Subject: [ANNOUNCE] GIT $vername " From 8e6ca411c7db6faefd162f03996fdc90eb739050 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 1 Dec 2007 13:39:50 -0800 Subject: [PATCH 0281/2612] Prepare for "libexec" --- Make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Make b/Make index 6f5c76f8aacfef..a1b5e9755ee266 100755 --- a/Make +++ b/Make @@ -30,7 +30,7 @@ snap) d="prefix=$HOME/git-snap-$v" ;; *) - d="prefix=$HOME/git-test" ;; + d="prefix=$HOME/git-test gitexecdir=\$(prefix)/libexec/git-core" ;; esac : ${O=-O2} From 788ab566ae2e2cd7c628ad3cd844d9ee6c0c362a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 1 Dec 2007 13:40:11 -0800 Subject: [PATCH 0282/2612] WI: a bit wider log --- WI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WI b/WI index 99becb1a03f19a..1e4f4e9444a488 100755 --- a/WI +++ b/WI @@ -5,7 +5,7 @@ maint_at=$(git rev-parse --verify refs/heads/maint) master_at=$(git rev-parse --verify refs/heads/master) log () { - git shortlog -w70,2,6 --no-merges "$@" + git shortlog -w76,2,4 --no-merges "$@" } echo "Subject: What's in git.git (stable)" From 5a349d0db839fd203072d8fb4c223b2702f0e84d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 7 Dec 2007 01:09:00 -0800 Subject: [PATCH 0283/2612] WC: mention offcuts --- WC | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/WC b/WC index ba5825a06f6b4f..cd2fc89be8c962 100755 --- a/WC +++ b/WC @@ -12,8 +12,9 @@ X-next-at: $next_at Here are the topics that have been cooking. Commits prefixed with '-' are only in 'pu' while commits prefixed with '+' are -in 'next'. The topics list the commits in reverse chronological -order. +in 'next'. Others commits may be stashed in 'offcuts'. + +The topics list the commits in reverse chronological order. EOF From d3cd72a090309b93f19ced44959f3a327d1e794c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 7 Dec 2007 01:09:38 -0800 Subject: [PATCH 0284/2612] UWC: do not lose description for graduated topics --- UWC | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/UWC b/UWC index 16597159e9046c..8f3bfb2535371d 100755 --- a/UWC +++ b/UWC @@ -97,7 +97,7 @@ sub parse_whats_cooking { next; } - if (/^ [-+.?] / || /^ \S/) { + if (/^ [-+.?*] / || /^ \S/) { $topic->{"names"} .= $_; next; } @@ -151,8 +151,12 @@ sub merge_whats_cooking { my $newtopic = delete $new_wc->{"topic hash"}{$name}; if (!defined $newtopic) { + $topic->{"text"} = ("<{"head"} . + $topic->{"names"} . + ">>\n\n" . + $topic->{"text"}); $topic->{"names"} = ""; - $topic->{"text"} = "<>"; next; } if (($newtopic->{"names"} ne $topic->{"names"}) || From 8f92733251b86d3dc476589f98659f10de8da2a7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 7 Dec 2007 01:10:31 -0800 Subject: [PATCH 0285/2612] topic: slight code shuffling for readability --- git-topic.perl | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/git-topic.perl b/git-topic.perl index f875d0d5d81c83..966dadd9b070d7 100755 --- a/git-topic.perl +++ b/git-topic.perl @@ -77,9 +77,10 @@ sub rebase_marker { sub describe_topic { my ($topic) = @_; + open(CONF, '-|', qw(git repo-config --get), - "branch.$topic.description") - or die; + "branch.$topic.description") + or die; my $it = join('',); close(CONF); chomp($it); @@ -88,29 +89,26 @@ sub describe_topic { } } -sub wrap_print { - my ($string) = @_; - format STDOUT = -~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - $string - ~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - $string -. - write; -} +my @in_next = read_revs_short('^master', $stage[0]); open(TOPIC, '-|', qw(git for-each-ref), - '--sort=-authordate', - '--format=%(objectname) %(authordate) %(refname)', - "refs/heads/$topic_pattern") - or die; - -my @in_next = read_revs_short('^master', $stage[0]); + '--sort=-authordate', + '--format=%(objectname) %(authordate) %(refname)', + "refs/heads/$topic_pattern") + or die; +my @topic = (); while () { chomp; my ($sha1, $date, $topic) = m|^([0-9a-f]{40})\s(.*?)\srefs/heads/(.+)$| - or next; + or next; + push @topic, [$sha1, $date, $topic]; +} + +my @last_merge_to_next = (); + +for (@topic) { + my ($sha1, $date, $topic) = @$_; my @revs = read_revs($base, $sha1, (1<<@stage)-1); next unless (@revs || $all); @@ -141,3 +139,14 @@ sub wrap_print { wrap_print("$mark $item->[1]"); } } + +sub wrap_print { + my ($string) = @_; + format STDOUT = +~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + $string + ~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + $string +. + write; +} From 389f84506b391c83bcb8139ec92399ee38d52ebb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 12 Dec 2007 18:16:30 -0800 Subject: [PATCH 0286/2612] Meta/Make: do not depend on installed git --- Make | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Make b/Make index a1b5e9755ee266..3b9d9f2d1b56f9 100755 --- a/Make +++ b/Make @@ -4,7 +4,8 @@ # PATH=/usr/bin:/bin G=/opt/packrat/playpen/public/in-place/git/index/gitweb_config.perl -PATH=$HOME/git-master/bin:/usr/bin:/bin +GIT=$HOME/git-master/bin/git +PATH=/usr/bin:/bin LANG=C LC_CTYPE=C export PATH LANG LC_CTYPE @@ -15,14 +16,14 @@ export PATH LANG LC_CTYPE old_style_def_fix=b79d18c92d9f4841a6a1a29b7b2373a8ff9871e1 -head=`git symbolic-ref HEAD 2>/dev/null` && +head=`$GIT symbolic-ref HEAD 2>/dev/null` && branch=`expr "$head" : 'refs/heads/\(.*\)'` || branch=detached case "$branch" in next | maint | master | pu) d="prefix=$HOME/git-$branch" ;; snap) - v=`git describe HEAD` + v=`$GIT describe HEAD` expr "$v" : '.*-g[0-9a-f]*$' >/dev/null && { echo >&2 "You are on 'snap' but $v is not an official version." exit 1 @@ -40,8 +41,8 @@ do case "$1" in -pedantic) o= && - rev=$(git-rev-parse HEAD) && - case "$(git-merge-base "$old_style_def_fix" "$rev")" in + rev=$($GIT rev-parse HEAD) && + case "$($GIT merge-base "$old_style_def_fix" "$rev")" in $old_style_def_fix) o=-Wold-style-definition ;; esac @@ -63,6 +64,8 @@ do shift done +$GIT describe --abbrev=4 HEAD | sed -e 's/-/./g' >version + make $d \ GITWEB_CONFIG=$G \ PYTHON_PATH=/usr/bin/python2.4 \ From fa3a6ae8cfb725ffb64306fb1c7ca6bc1562bfcb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 12 Dec 2007 18:17:10 -0800 Subject: [PATCH 0287/2612] (todo): remove prep text files --- prep-maint.txt | 62 ------------------------------------------------- prep-master.txt | 5 ---- 2 files changed, 67 deletions(-) delete mode 100644 prep-maint.txt delete mode 100644 prep-master.txt diff --git a/prep-maint.txt b/prep-maint.txt deleted file mode 100644 index 8641f5ee15b70b..00000000000000 --- a/prep-maint.txt +++ /dev/null @@ -1,62 +0,0 @@ -diff --git a/Documentation/RelNotes-1.5.2.4.txt b/Documentation/RelNotes-1.5.2.4.txt -new file mode 100644 -index 0000000..a46b495 ---- /dev/null -+++ b/Documentation/RelNotes-1.5.2.4.txt -@@ -0,0 +1,34 @@ -+GIT v1.5.2.4 Release Notes -+========================== -+ -+Fixes since v1.5.2.3 -+-------------------- -+ -+ * Bugfixes -+ -+ - "git-gui" bugfixes, including a handful fixes to run it -+ better on Cygwin/MSYS. -+ -+ - "git checkout" failed to switch back and forth between -+ branches, one of which has "frotz -> xyzzy" symlink and -+ file "xyzzy/filfre", while the other one has a file -+ "frotz/filfre". -+ -+ - "git prune" used to segfault upon seeing a commit that is -+ referred to by a tree object (aka "subproject"). -+ -+ - "git diff --name-status --no-index" mishandled an added file. -+ -+ - "git apply --reverse --whitespace=warn" still complained -+ about whitespaces that a forward application would have -+ introduced. -+ -+ * Documentation Fixes and Updates -+ -+ - A handful documentation updates. -+ -+-- -+exec >/var/tmp/1 -+O=v1.5.2.3-24-gec0603e -+echo O=`git describe refs/heads/maint` -+git shortlog --no-merges $O..refs/heads/maint -diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN -index 5c6d2b2..a318baa 100755 ---- a/GIT-VERSION-GEN -+++ b/GIT-VERSION-GEN -@@ -1,7 +1,7 @@ - #!/bin/sh - - GVF=GIT-VERSION-FILE --DEF_VER=v1.5.2.3.GIT -+DEF_VER=v1.5.2.4.GIT - - LF=' - ' -diff --git a/RelNotes b/RelNotes -index a1c82a8..1f6c16e 120000 ---- a/RelNotes -+++ b/RelNotes -@@ -1 +1 @@ --Documentation/RelNotes-1.5.2.3.txt -\ No newline at end of file -+Documentation/RelNotes-1.5.2.4.txt -\ No newline at end of file diff --git a/prep-master.txt b/prep-master.txt deleted file mode 100644 index c71d83bc50290a..00000000000000 --- a/prep-master.txt +++ /dev/null @@ -1,5 +0,0 @@ --- -exec >/var/tmp/1 -O=v1.5.3 -echo O=`git describe refs/heads/master` -git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint From c6d71b2d5400742659dbeb37277f9baef2c4f6f9 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 14 Dec 2007 22:43:05 -0800 Subject: [PATCH 0288/2612] Rewrite 'git-foo' => 'git foo' --- DoKernelOrg | 4 ++-- PU | 10 +++++----- RB | 10 +++++----- RP | 2 +- SE | 2 +- Summary | 2 +- V | 2 +- WI | 4 ++-- dodoc.sh | 8 ++++---- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index 872fa8fc24396b..085265828e4e78 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -25,7 +25,7 @@ case "$1" in nstalled=install for branch in $branches do - if git-rev-parse --verify refs/heads/$branch 2>/dev/null + if git rev-parse --verify refs/heads/$branch 2>/dev/null then echo "** $branch **" && git checkout $branch && @@ -84,7 +84,7 @@ maint | master) ;; esac >>./:all.log 2>&1 && case "$V" in - *.rc[0-9]*) + *.rc[0-9]* | *-rc[0-9]*) mkdir -p $G/testing && for a in $narch do diff --git a/PU b/PU index 4b4be2ba42af34..2a7f00b0a65cef 100755 --- a/PU +++ b/PU @@ -3,8 +3,8 @@ # Rebuild "pu" from topic branches. # -git-update-index --refresh || exit -case "$(git-diff-index --name-status HEAD)" in +git update-index --refresh || exit +case "$(git diff-index --name-status HEAD)" in '') ;; *) echo 2>&1 "Local modifications exist." exit 1;; @@ -36,14 +36,14 @@ case "$#" in NHH= for H in $HH do - HSHA1=`git-rev-parse --verify $H` || continue - MB=`git-show-branch --merge-base pu $HSHA1` + HSHA1=`git rev-parse --verify $H` || continue + MB=`git show-branch --merge-base pu $HSHA1` case "$LF$MB$LF" in *"$LF$HSHA1$LF"*) continue ;; # already merged. esac I=$(($I+1)) echo -n "$I: " - git-show-branch $H + git show-branch $H NHH="${NHH}$H " done case "$I" in diff --git a/RB b/RB index 918a3727f700d5..c557b06971ffa9 100755 --- a/RB +++ b/RB @@ -19,15 +19,15 @@ do topic_sha1=`git rev-parse --verify "refs/heads/$topic"` date=` - git-rev-list -1 --pretty "$topic" | + git rev-list -1 --pretty "$topic" | sed -ne 's/^Date: *\(.*\)/ (\1)/p' ` - only_next_1=`git-rev-list ^master "^$topic" next | sort` - only_next_2=`git-rev-list ^master next | sort` + only_next_1=`git rev-list ^master "^$topic" next | sort` + only_next_2=`git rev-list ^master next | sort` rebase= if test "$only_next_1" = "$only_next_2" then - not_in_topic=`git-rev-list "^$topic" master` + not_in_topic=`git rev-list "^$topic" master` if test -z "$not_in_topic" then :; # already up-to-date. @@ -38,7 +38,7 @@ do if test -n "$rebase" then echo "Rebasing $topic to pick up:" - git-rev-list --pretty=oneline "^$topic" master | + git rev-list --pretty=oneline "^$topic" master | sed -e 's/^[0-9a-f]* / * /' git checkout "$topic" && git rebase master || break; diff --git a/RP b/RP index 917cca2f16d3a5..d837c1d57b6df9 100755 --- a/RP +++ b/RP @@ -20,7 +20,7 @@ case "$#,$1" in base_branch=master ;; 2) - base_branch=$(git-rev-parse --verify "$2") || exit + base_branch=$(git rev-parse --verify "$2") || exit ;; *) echo >&2 "$usage" diff --git a/SE b/SE index 82b71af441526e..78a4fd157e9950 100755 --- a/SE +++ b/SE @@ -24,7 +24,7 @@ do shift done -git-send-email \ +git send-email \ --from="$me" \ --envelope-sender="$me" \ --to="$to" \ diff --git a/Summary b/Summary index 60976cd444b249..951bc9f9aa95a9 100755 --- a/Summary +++ b/Summary @@ -6,7 +6,7 @@ trap 'rm -f $tmp-*' 0 since="$1" until="$2" -git-rev-list --no-merges "master@{$1}..master@{$2}" >"$tmp-0.txt" +git rev-list --no-merges "master@{$1}..master@{$2}" >"$tmp-0.txt" top="master@{$until}" bottom="master@{$since}" diff --git a/V b/V index 000a1d8fe115f5..572cc78b6a491c 100755 --- a/V +++ b/V @@ -24,5 +24,5 @@ do installed=$(git describe $version) in="" out="" installed=" $installed" fi - echo "$in$v$out $(git-describe refs/heads/$v)$installed" + echo "$in$v$out $(git describe refs/heads/$v)$installed" done diff --git a/WI b/WI index 1e4f4e9444a488..c4f429e834bfc8 100755 --- a/WI +++ b/WI @@ -13,7 +13,7 @@ echo "X-maint-at: $maint_at" echo "X-master-at: $master_at" tagged=`git rev-parse --not --verify hold/sa/maint` -list=`git-rev-list $tagged refs/heads/maint 2>/dev/null` +list=`git rev-list $tagged refs/heads/maint 2>/dev/null` if test -n "$list" then echo @@ -23,7 +23,7 @@ then fi tagged=`git rev-parse --not --verify hold/sa/master` -list=`git-rev-list $tagged refs/heads/master 2>/dev/null` +list=`git rev-list $tagged refs/heads/master 2>/dev/null` if test -n "$list" then echo diff --git a/dodoc.sh b/dodoc.sh index babafb27af323d..20c0c933f8b65f 100755 --- a/dodoc.sh +++ b/dodoc.sh @@ -12,7 +12,7 @@ case " $* " in echo $HOME/git-doc/dodoc.sh | at now ;; esac -exec git-update-server-info +exec git update-server-info $ chmod +x hooks/post-update END_OF_COMMENTARY @@ -25,7 +25,7 @@ END_OF_COMMENTARY # updated the updates are pushed back into their own branches # in git.git repository. -ID=`git-rev-parse --verify refs/heads/master` || exit $? +ID=`git rev-parse --verify refs/heads/master` || exit $? unset GIT_DIR @@ -44,8 +44,8 @@ trap 'rm -f "$tmp".*' 0 git pull "$MASTERREPO" master && git fetch --tags "$MASTERREPO" ) >/dev/null 2>/dev/null || exit $? -test $(git-rev-parse --verify refs/heads/master) == "$ID" && -NID=$(git-describe --abbrev=4 "$ID") && +test $(git rev-parse --verify refs/heads/master) == "$ID" && +NID=$(git describe --abbrev=4 "$ID") && test '' != "$NID" || exit $? # Set up subrepositories From 791c00b270e31cf44bc79a2aafc00385d0d3435e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 26 Dec 2007 19:15:32 -0800 Subject: [PATCH 0289/2612] Meta/Make: clean "version" file --- Make | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Make b/Make index 3b9d9f2d1b56f9..29483d2acf0618 100755 --- a/Make +++ b/Make @@ -64,7 +64,9 @@ do shift done -$GIT describe --abbrev=4 HEAD | sed -e 's/-/./g' >version +sh -c 'git describe --abbrev=4 HEAD' >/dev/null 2>&1 || { + $GIT describe --abbrev=4 HEAD | sed -e 's/-/./g' >version +} make $d \ GITWEB_CONFIG=$G \ @@ -72,3 +74,5 @@ make $d \ ETC_GITCONFIG=$d/etc/gitconfig \ CFLAGS="$O -Wall -Wdeclaration-after-statement -g" \ "$@" + +rm -f version From 66c08fb3953e883415a19a50c1c23c079974931d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 26 Dec 2007 19:17:23 -0800 Subject: [PATCH 0290/2612] Meta/DoKernelOrg: add private build machines. --- DoKernelOrg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DoKernelOrg b/DoKernelOrg index 085265828e4e78..b84293a6329206 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -46,7 +46,7 @@ maint | master) hera.kernel.org) narch='x86_64 i386' arch=x86_64 ;; - demeter.kernel.org|demeter|old-hera.kernel.org|kunrun-vmw-fc5) + wing-fc?|kunrun-vmw-fc5) arch=i386 ;; *) echo >&2 "What are you talking about???" exit 1 ;; From bd95ebda6674aa189dcd0f4b7fb0a93d8d06030a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 6 Jan 2008 23:47:31 -0800 Subject: [PATCH 0291/2612] Update MaintNotes --- MaintNotes | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/MaintNotes b/MaintNotes index 5ec4b58a4404c0..685296bf35a9ff 100644 --- a/MaintNotes +++ b/MaintNotes @@ -22,14 +22,22 @@ floor --- please do not hesitate to remind me. The list archive is available at a few public sites as well: + http://news.gmane.org/gmane.comp.version-control.git/ http://marc.theaimsgroup.com/?l=git - http://news.gmane.org/gmane.comp.version-control.git - http://www.spinics.net/lists/git/ + http://www.spinics.net/lists/git/ and some people seem to prefer to read it over NNTP: nntp://news.gmane.org/gmane.comp.version-control.git +When you point at a message in a mailing list archive, using +gmane is often the easiest to follow by readers, like this: + + http://thread.gmane.org/gmane.comp.version-control.git/27/focus=217 + +as it also allows people who subscribe to the mailing list as +gmane newsgroup to "jump to" the article. + * Repositories, branches and documentation. My public git.git repository is at: @@ -45,8 +53,8 @@ Impatient people might have better luck with the latter one. Their gitweb interfaces are found at: - http://git.kernel.org/?p=git/git.git - http://repo.or.cz/w/alt-git.git + http://git.kernel.org/?p=git/git.git + http://repo.or.cz/w/alt-git.git There are three branches in git.git repository that are not about the source tree of git: "todo", "html" and "man". The @@ -72,26 +80,27 @@ a task. There are four branches in git.git repository that track the source tree of git: "master", "maint", "next", and "pu". I may add more maintenance branches (e.g. "maint-1.5.1") if we have -huge backward incompatible feature updates in the future to keep +hugely backward incompatible feature updates in the future to keep an older release alive; I may not, but the distributed nature of git means any volunteer can run a stable-tree like that himself. The "master" branch is meant to contain what are very well tested and ready to be used in a production setting. There could occasionally be minor breakages or brown paper bag bugs -but they are not expected to be anything major. Every now and +but they are not expected to be anything major, and more +importantly quickly and trivially fixable. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was v1.5.3 done on Sep 2nd this year. You -can expect that the tip of the "master" branch is always as -stable as any of the released versions, if not more stable. +last such release was v1.5.3 done on Sep 2nd last year. You +can expect that the tip of the "master" branch is always more +stable than any of the released versions. Whenever a feature release is made, "maint" branch is forked off from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was v1.5.2.5. +release they are updates to; the last such release was v1.5.3.7. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. @@ -122,13 +131,11 @@ but is expected to work more or less without major breakage. I usually use "next" version of git for my own work, so it cannot be _that_ broken to prevent me from pushing the changes out. The "next" branch is where new and exciting things take place. -Note that being in "next" does not mean the change will be in -the next feature release. The above three branches, "master", "maint" and "next" are never rewound, so you should be able to safely track them (this automatically means the topics that have been merged into "next" -are not rebased, and you can find the tip of topic branches you +are never rebased, and you can find the tip of topic branches you are interested in from the output of "git log next"). The "pu" (proposed updates) branch bundles all the remainder of @@ -155,7 +162,7 @@ do it with this: git merge that-topic-branch git branch -d that-topic-branch -However, being in "next" is not a guarantee to appear in the +Note that being in "next" is not a guarantee to appear in the next release (being in "master" is such a guarantee, unless it is later found seriously broken and reverted), or even in any future release. There even were cases that topics needed @@ -195,8 +202,8 @@ relying on heavily: - Linus on general design issues. - - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, and - Rene Scharfe on general implementation issues. + - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, + Réne Scharfe and Jeff King on general implementation issues. - Shawn and Nicolas Pitre on pack issues. From eb4be62ca56613d9cb8b7d99c4571ff2b91693ff Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 1 Feb 2008 19:56:58 -0800 Subject: [PATCH 0292/2612] Update MaintNotes in preparation for 1.5.4 --- MaintNotes | 4 ++-- SE | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/MaintNotes b/MaintNotes index 685296bf35a9ff..e19e49d4cc1fb9 100644 --- a/MaintNotes +++ b/MaintNotes @@ -91,7 +91,7 @@ but they are not expected to be anything major, and more importantly quickly and trivially fixable. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was v1.5.3 done on Sep 2nd last year. You +last such release was v1.5.4 done on Feb 2nd this year. You can expect that the tip of the "master" branch is always more stable than any of the released versions. @@ -100,7 +100,7 @@ from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was v1.5.3.7. +release they are updates to; the last such release was v1.5.3.8. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. diff --git a/SE b/SE index 78a4fd157e9950..067f2acbff1202 100755 --- a/SE +++ b/SE @@ -28,6 +28,7 @@ git send-email \ --from="$me" \ --envelope-sender="$me" \ --to="$to" \ + --no-signed-off-cc \ --suppress-from \ --smtp-server=$smtp \ $dryrun \ From 87cbdc778fac75da019bf1568d8b87bf1f329745 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 3 Feb 2008 00:53:56 -0800 Subject: [PATCH 0293/2612] TODO: revamp --- TODO | 164 +++++++++-------------------------------------------------- 1 file changed, 25 insertions(+), 139 deletions(-) diff --git a/TODO b/TODO index 9c6f60359cfca1..b25f65a8c52c23 100644 --- a/TODO +++ b/TODO @@ -6,156 +6,42 @@ The latest copy of this document is found at http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO http://repo.or.cz/w/alt-git.git?a=blob;hb=todo;f=TODO -This is primarily meant for my personal reminder, but feel free -to pick an item from the list and work on it. - ---------------------------------------------------------------- -Recent issues -------------- - -* cherry-pick unexpected conflicts - -From: Gerrit Pape -Subject: Re: unexpected git-cherry-pick conflict -Date: Wed, 13 Jun 2007 13:43:35 +0000 -Message-ID: <20070613134336.13661.qmail@c61f4fed932273.315fe32.mid.smarden.org> - -* 3way merge still has D/F conflict problems - -Subject: [RFH] 3way still has D/F conflict problems... -Date: Mon, 23 Jul 2007 00:22:51 -0700 -Message-ID: <7vejizmvn8.fsf@assigned-by-dhcp.cox.net> - -I am punting on unpack-trees related D/F issues for 1.5.3. We -might end up rewriting read-tree after the release. - -* Pushing into a non-bare repository more gracefully. - -When git-push is done to a non-bare repository and updates the -branch that is currently checked out, we currently do not do -anything special. - -From: Linus Torvalds -Message-ID: - -* git-daemon bug? - -From: Franck Bui-Huu -Message-ID: <450EABD0.1040102@innova-card.com> - -Repeated requests against git-daemon makes it stuck under --syslog - -[jc: does not reproduce easily for me; has anybody seen it?] - -* Use gitattributes for more things. - - - 'precious' files that are not tracked but not - build-products. Currently people seem to put them in - .gitignore, but that is not quite right, as .gitignore is - meant for ignoring things that can be lost (build products, - editor backup files). "git clean -x" and "git checkout" to - another branch that has a file where the current branch has a - directory could lose such 'precious' files. - - - Others??? - - -Technical (heavier) -------------------- - -* Subproject Porcelain. - - - recursive checkout - - recursive diff - - From: Junio C Hamano - Message-ID: <11793556371774-git-send-email-junkio@cox.net> - -* make merge-recursive and read-tree -u more robust when D/F - conflict is involved. - - From: Junio C Hamano - Message-ID: <11793556371774-git-send-email-junkio@cox.net> - -* Use blame machinery to track a single file (not path) in a finer - grained way. - -From: Linus Torvalds -Message-ID: - -[jc: I have a fixed-up one parked in 'pu' and also outlined what -other things I think are needed in my response: - - Message-ID: <7vwt06wqv8.fsf@assigned-by-dhcp.cox.net> -] - -Technical (milder) ------------------- - -* perhaps add 'tree' entries to the index. - - From: Junio C Hamano - Message-ID: <11793556371774-git-send-email-junkio@cox.net> - -* "pure" clones, that does not know about where it was cloned - from. Specifically, no [remote "origin"] in .git/config, nor - refs/remotes/origin. - - From: Junio C Hamano - Message-ID: <7vr6pac86g.fsf@assigned-by-dhcp.cox.net> - -* upload-pack support to start fetching from any valid point on - the history, not just published refs. (Erik W. Biederman - ) - -* daemon --strict-symlink. - -* "git fetch" should be able to use foreign SCM import backends - such as svnimport and cvsimport. - -* "git clone" should be a thin wrapper around init/remote/fetch/checkout - - From: Junio C Hamano - Message-ID: <11793556371774-git-send-email-junkio@cox.net> - -* Maybe grok PGP signed text/plain in mailinfo as well. - +Issues that I have looked at, but unprocessed, unconcluded +and/or lack enough discussions to proceed. -Technical (trivial) -------------------- +* "git-apply --whitespace=fix" context adjustment + $gmane/72248 -* Give --stdin to git-log, similar to git-rev-list +* pretty.c optimization (Marco) + $gmane/72260 - From: "Marco Costalba" - Message-ID: +* zlib abstraction (Marco) + $gmane/72262 -[jc: but why is it needed? shouldn't we be using rev-list plumbing, - and if not perhaps rev-list needs to learn something log knows - how to do?] +* revision.c::limit_list() breakage (Jeff King) + $gmane/72324 + t/t6009 -* Update the lockfile protocol so that closing and renaming are - done inside lockfile commit time. Some filesystems do not - like an open file renamed and then closed. Come up with a - patch and pass Alex for an Ack. +* synopsys: use {} instead of () for grouping alternatives (Jari Aalto) + $gmane/72243 -* Mbx (not mbox) support for git-mailsplit. +* A symref file for ".git/" (Lars Hjemli) + $gmane/72244 -* git-clone fail .git/refs/foo (Yann Dirson ) - <20060610225040.GA7766@nowhere.earth> +* safecrlf (Steffen Prohaska) + $gmane/72285 -* git-proxy should be spawned with sh -c 'command' $1 $2. +* git-send-email unechoed interactive password (Michael Witten) + $gmane/72220 -[jc: should it? -- deciding if it should may not be "trivial", -but if it turns out to be the right thing to do, the change -itself is trivial.] +* compat/qsort (Brian Downing) + $gmane/72311 -* Maybe a true git-proxy command that reads the first request - pkt-line, and redirects the request to its real destination. +* unified "user's choice brower" (Christian Couder) + $gmane/72226 -* test scripts for the relative directory path stuff. +* "[alias] st = status" and "cd .git && git st" (Jeff King) + $gmane/72327 - -Local Variables: -mode: text -End: From 151d4dc932b765b285ec5674eab0878a8019b28f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 16 Feb 2008 23:17:13 -0800 Subject: [PATCH 0294/2612] Update MaintNotes --- MaintNotes | 72 +++++++++++++++------------ genMaintNotes.perl | 118 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+), 31 deletions(-) create mode 100755 genMaintNotes.perl diff --git a/MaintNotes b/MaintNotes index e19e49d4cc1fb9..67c2554ed5e863 100644 --- a/MaintNotes +++ b/MaintNotes @@ -1,6 +1,7 @@ -Now a new feature release is out, it's a good time to welcome new -people to the list. This message talks about how git.git is managed, -and how you can work with it. +Welcome to git community. + +This message talks about how git.git is managed, and how you can work +with it. * IRC and Mailing list @@ -9,9 +10,9 @@ IRC channel on Freenode. Its log is available at: http://colabti.de/irclogger/irclogger_log/git -The development however is primarily done on this mailing list -you are reading right now. If you have patches, please send -them to the list, following Documentation/SubmittingPatches. +The development however is primarily done on the git mailing list +(git@vger.kernel.org). If you have patches, please send them to the +list, following Documentation/SubmittingPatches. I usually try to read all patches posted to the list, and follow almost all the discussions on the list, unless the topic is about an @@ -59,7 +60,7 @@ Their gitweb interfaces are found at: There are three branches in git.git repository that are not about the source tree of git: "todo", "html" and "man". The first one was meant to contain TODO list for me, but I am not -good at maintaining such a list so it is not as often updated as +good at maintaining such a list and it is not as often updated as it could/should be. It also contains some helper scripts I use to maintain git. @@ -79,10 +80,10 @@ a task. There are four branches in git.git repository that track the source tree of git: "master", "maint", "next", and "pu". I may -add more maintenance branches (e.g. "maint-1.5.1") if we have +add more maintenance branches (e.g. "maint-1.5.3") if we have hugely backward incompatible feature updates in the future to keep an older release alive; I may not, but the distributed nature of -git means any volunteer can run a stable-tree like that himself. +git means any volunteer can run a stable-tree like that herself. The "master" branch is meant to contain what are very well tested and ready to be used in a production setting. There @@ -91,7 +92,7 @@ but they are not expected to be anything major, and more importantly quickly and trivially fixable. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was v1.5.4 done on Feb 2nd this year. You +last such release was 1.5.4 done on Feb 2nd this year. You can expect that the tip of the "master" branch is always more stable than any of the released versions. @@ -100,7 +101,7 @@ from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was v1.5.3.8. +release they are updates to; the last such release was 1.5.4.2. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. @@ -116,13 +117,13 @@ tip of these branches in my public repository, however, partly to keep the number of branches that downstream developers need to worry about low, and primarily because I am lazy. -I judge the quality of topic branches, taking advices from the -mailing list discussions. Some of them start out as "good idea -but obviously is broken in some areas (e.g. breaks the existing -testsuite)" and then with some more work (either by the original -contributor or help from other people on the list) becomes "more -or less done and can now be tested by wider audience". Luckily, -most of them start out in the latter, better shape. +The quality of topic branches are judged primarily by the mailing list +discussions. Some of them start out as "good idea but obviously is +broken in some areas (e.g. breaks the existing testsuite)" and then +with some more work (either by the original contributor's effort or +help from other people on the list) becomes "more or less done and can +now be tested by wider audience". Luckily, most of them start out in +the latter, better shape. The "next" branch is to merge and test topic branches in the latter category. In general, the branch always contains the tip @@ -132,11 +133,19 @@ usually use "next" version of git for my own work, so it cannot be _that_ broken to prevent me from pushing the changes out. The "next" branch is where new and exciting things take place. -The above three branches, "master", "maint" and "next" are never -rewound, so you should be able to safely track them (this -automatically means the topics that have been merged into "next" -are never rebased, and you can find the tip of topic branches you -are interested in from the output of "git log next"). +The two branches "master" and "maint" are never rewound, and +"next" usually will not be either (this automatically means the +topics that have been merged into "next" are usually not +rebased, and you can find the tip of topic branches you are +interested in from the output of "git log next"). You should be +able to safely track them. + +After a feature release is made from "master", however, "next" +will be rebuilt from the tip of "master" using the surviving +topics. The commit that replaces the tip of the "next" will +have the identical tree, but it will have different ancestry +from the tip of "master". An announcement will be made to warn +people about such a rebasing. The "pu" (proposed updates) branch bundles all the remainder of topic branches. The "pu" branch, and topic branches that are @@ -186,14 +195,13 @@ of them. Although the following are included in git.git repository, they have their own authoritative repository and maintainers: - git-gui/ -- this subdirectory comes from Shawn Pearce's git-gui - project, which is found at: + - git-gui/ comes from Shawn Pearce's git-gui project: - git://repo.or.cz/git-gui.git + git://repo.or.cz/git-gui.git - gitk -- this file is maintained by Paul Mackerras, at: + - gitk-git/ comes from Paul Mackerras's gitk project: - git://git.kernel.org/pub/scm/gitk/gitk.git + git://git.kernel.org/pub/scm/gitk/gitk.git I would like to thank everybody who helped to raise git into the current shape. Especially I would like to thank the git list @@ -203,7 +211,7 @@ relying on heavily: - Linus on general design issues. - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, - Réne Scharfe and Jeff King on general implementation issues. + René Scharfe and Jeff King on general implementation issues. - Shawn and Nicolas Pitre on pack issues. @@ -213,12 +221,14 @@ relying on heavily: - Eric Wong on git-svn. + - Simon Hausmann on git-p4. + - Jakub Narebski, Petr Baudis, and Luben Tuikov on gitweb. - J. Bruce Fields on documentaton issues. - - Johannes Schindelin and Johannes Sixt for their effort to - move things forward on the Windows front. Although my + - Johannes Schindelin, Johannes Sixt and others for their effort + to move things forward on the Windows front. Although my repository does not have much from the effort of MinGW team, I expect a merge into mainline will happen so that everybody can work from the same codebase. diff --git a/genMaintNotes.perl b/genMaintNotes.perl new file mode 100755 index 00000000000000..1673fcb7ea70b2 --- /dev/null +++ b/genMaintNotes.perl @@ -0,0 +1,118 @@ +#!/usr/bin/perl -w + +print <<'EOF' ; + + + + + + +

A Message from the Git Maintainer

+EOF + +sub show_links { + local ($_) = @_; + my $br = ''; + for (split(/\n/, $_)) { + s/^\s*//; + s/\s*\Z//; + my $url = $_; + my $comment = $_; + $url =~ s/ .*//; + if ($url =~ /^http:/) { + print "$br$comment"; + } else { + print "$br$comment"; + } + $br = "
\n"; + } + print "\n"; +} + +sub show_commands { + local ($_) = @_; + my $br = ''; + for (split(/\n/, $_)) { + s/^\s*//; + s/\s*\Z//; + print "$br$_"; + $br = "
\n"; + } + print "\n"; +} + +my $in_ul; +$/ = ""; +while (<>) { + $_ =~ s/\n+$//s; + + if (/^ - /) { + if (!$in_ul) { + $in_ul = 1; + print "
    \n"; + } + s/^ - //; + print "
  • $_
  • \n"; + next; + } + + if ($in_ul) { + $in_ul = undef; + print "
\n\n"; + } + + if (s/^\*\s*//) { + print "

$_

\n\n"; + } elsif (s/^ {4,}//) { + print "
\n"; + if (/^(http|git|nntp):\/\//) { + show_links($_); + } else { + show_commands($_); + } + print "
\n\n"; + } else { + print "

$_

\n\n"; + } +} + +print <<'EOF' ; + + + + + +EOF From e50c6fa8254f1104a18486f37ec94b3c66a243ba Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 16 Feb 2008 23:20:48 -0800 Subject: [PATCH 0295/2612] UWC: match the beginning of message a bit more loosely --- UWC | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UWC b/UWC index 8f3bfb2535371d..846dc6b112e3eb 100755 --- a/UWC +++ b/UWC @@ -43,7 +43,7 @@ sub parse_whats_cooking { } if (!defined $head) { - if (/^Here are the topics that have been cooking\./) { + if (/^Here are the topics that have been/) { $head = $_; } next; From c125a65b44c0b14ca47d3cc6529277ce7ded9f25 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 16 Feb 2008 23:21:13 -0800 Subject: [PATCH 0296/2612] TODO: remove done items --- TODO | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/TODO b/TODO index b25f65a8c52c23..ca45ecf58f8e57 100644 --- a/TODO +++ b/TODO @@ -11,9 +11,6 @@ The latest copy of this document is found at Issues that I have looked at, but unprocessed, unconcluded and/or lack enough discussions to proceed. -* "git-apply --whitespace=fix" context adjustment - $gmane/72248 - * pretty.c optimization (Marco) $gmane/72260 @@ -30,18 +27,7 @@ and/or lack enough discussions to proceed. * A symref file for ".git/" (Lars Hjemli) $gmane/72244 -* safecrlf (Steffen Prohaska) - $gmane/72285 - -* git-send-email unechoed interactive password (Michael Witten) - $gmane/72220 - -* compat/qsort (Brian Downing) - $gmane/72311 - -* unified "user's choice brower" (Christian Couder) - $gmane/72226 - * "[alias] st = status" and "cd .git && git st" (Jeff King) $gmane/72327 + From 53b4074943f9785c0ccf949477c265d200a70c0b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 9 Mar 2008 03:55:25 -0700 Subject: [PATCH 0297/2612] Latest maint release is now 1.5.4.4 --- MaintNotes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintNotes b/MaintNotes index 67c2554ed5e863..9485228b855221 100644 --- a/MaintNotes +++ b/MaintNotes @@ -101,7 +101,7 @@ from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was 1.5.4.2. +release they are updates to; the last such release was 1.5.4.4. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. From efdc54a821c5be7d5c4be9d517ae0b02e04b90c7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 16 Mar 2008 03:25:58 -0700 Subject: [PATCH 0298/2612] Meta/Make: silly $? squashing bug fix --- Make | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Make b/Make index 29483d2acf0618..bf492c96e44334 100755 --- a/Make +++ b/Make @@ -74,5 +74,6 @@ make $d \ ETC_GITCONFIG=$d/etc/gitconfig \ CFLAGS="$O -Wall -Wdeclaration-after-statement -g" \ "$@" - +status=$? rm -f version +exit $status From 3e0f692b6be7462779bd6e3d3d658491f72ec15f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 16 Mar 2008 03:26:27 -0700 Subject: [PATCH 0299/2612] TODO clean-up and minor updates --- TODO | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index ca45ecf58f8e57..60d47d6eec73cd 100644 --- a/TODO +++ b/TODO @@ -8,11 +8,7 @@ The latest copy of this document is found at ---------------------------------------------------------------- -Issues that I have looked at, but unprocessed, unconcluded -and/or lack enough discussions to proceed. - -* pretty.c optimization (Marco) - $gmane/72260 +Issues that are unconcluded and/or lack enough discussions to proceed. * zlib abstraction (Marco) $gmane/72262 @@ -24,10 +20,12 @@ and/or lack enough discussions to proceed. * synopsys: use {} instead of () for grouping alternatives (Jari Aalto) $gmane/72243 -* A symref file for ".git/" (Lars Hjemli) - $gmane/72244 - * "[alias] st = status" and "cd .git && git st" (Jeff King) $gmane/72327 +* git --index-file= (Linus) + $gmane/77332 + +* fetch with "refs/*:refs/*" errors out erroneously + $gmane/77335 From 2bfbc39b51803acf128421e1d56599ab2915a6a8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 27 Mar 2008 21:06:46 -0700 Subject: [PATCH 0300/2612] TODO update as of 1.5.4.5/1.5.5-rc2 --- TODO | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/TODO b/TODO index 60d47d6eec73cd..4fa020a5d92535 100644 --- a/TODO +++ b/TODO @@ -8,14 +8,41 @@ The latest copy of this document is found at ---------------------------------------------------------------- -Issues that are unconcluded and/or lack enough discussions to proceed. +Issues that are unconcluded, lack enough discussions to proceed, and/or +placed on hold during rc freeze. -* zlib abstraction (Marco) - $gmane/72262 +* ff=only (Sverre Hvammen Johansen) + $gmane/78250 + +* more help backends (Christian Couder) + $gmane/78150 + +* cvsserver updates (Damien Diederen with help by Frank Lichtenheld) + $gmane/78188 + +* rewriting annotated tags in filter-branch (Brandon Casey) + $gmane/78286 + +* fsck --lost-found (me) + $gmane/78267 -* revision.c::limit_list() breakage (Jeff King) - $gmane/72324 - t/t6009 +* core.inithook (Dscho) + $gmane/78123 + +* receive.localBranches = { refuse | allow } (Dscho) + $gmane/78065 + +* autosetting core.ignorecase (Dmitry Potapov) + $gmane/78176 + +* mailinfo extention to extract Message-ID and others (Anton Gladkov) + $gmane/78006 + +* add -p with mode change (Jeff King) + $gmane/78340 + +* rebase -p + $gmane/78074 * synopsys: use {} instead of () for grouping alternatives (Jari Aalto) $gmane/72243 @@ -23,9 +50,29 @@ Issues that are unconcluded and/or lack enough discussions to proceed. * "[alias] st = status" and "cd .git && git st" (Jeff King) $gmane/72327 +* fetch with "refs/*:refs/*" errors out erroneously (Daniel) + $gmane/77335 + +* D/F conflict to merge a tree with D into a tree with F + +* "git fetch" does not exit with non-zero status when it failed to update + some refs due to non-ffness (Daniel) + $gmane/77178 + +* "git fetch" shows error when dangling symref exists at the remote + but does not really error out (Samuel Tardieu) + $gmane/76658 + +* use "assume unchanged" bit to implement narrow checkout + $gmane/77046 + +* send-pack vs receive-pack history exchange + +* zlib abstraction (Marco) + $gmane/72262 + * git --index-file= (Linus) $gmane/77332 -* fetch with "refs/*:refs/*" errors out erroneously - $gmane/77335 - +* git lost-found vs git fsck --lost-found + $gmane/78267 From 73188422c045e242b3f58d6ee731cc544d728a6b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Apr 2008 22:08:01 -0700 Subject: [PATCH 0301/2612] Gitweb: remove blame.js -- that's long gone. --- Gitweb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gitweb b/Gitweb index ac6944885b3e45..56b7e822d188f5 100755 --- a/Gitweb +++ b/Gitweb @@ -6,7 +6,7 @@ cd gitweb && DEST=`cd ../../index && /bin/pwd` || exit differs= -rsrc='gitweb.cgi gitweb.css git-favicon.png blame.js' +rsrc='gitweb.cgi gitweb.css git-favicon.png' for r in $rsrc do From 97129f0e4991d87e4d25a47938d8ad2a5e29e55c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Apr 2008 22:08:35 -0700 Subject: [PATCH 0302/2612] MaintNotes: post 1.5.5 updates --- MaintNotes | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MaintNotes b/MaintNotes index 9485228b855221..797a6fb4e51f35 100644 --- a/MaintNotes +++ b/MaintNotes @@ -8,7 +8,7 @@ with it. Many active members of development community hang around on #git IRC channel on Freenode. Its log is available at: - http://colabti.de/irclogger/irclogger_log/git + http://colabti.org/irclogger/irclogger_log/git The development however is primarily done on the git mailing list (git@vger.kernel.org). If you have patches, please send them to the @@ -80,7 +80,7 @@ a task. There are four branches in git.git repository that track the source tree of git: "master", "maint", "next", and "pu". I may -add more maintenance branches (e.g. "maint-1.5.3") if we have +add more maintenance branches (e.g. "maint-1.5.4") if we have hugely backward incompatible feature updates in the future to keep an older release alive; I may not, but the distributed nature of git means any volunteer can run a stable-tree like that herself. @@ -92,7 +92,7 @@ but they are not expected to be anything major, and more importantly quickly and trivially fixable. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was 1.5.4 done on Feb 2nd this year. You +last such release was 1.5.5 done on Apr 7th this year. You can expect that the tip of the "master" branch is always more stable than any of the released versions. @@ -101,7 +101,7 @@ from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was 1.5.4.4. +release they are updates to; the last such release was 1.5.4.5. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. From a12a481857fc5c869c2827b7c20fb78795c42608 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Apr 2008 22:08:54 -0700 Subject: [PATCH 0303/2612] TODO: post 1.5.5 snapshot --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 4fa020a5d92535..fb7a8331ef866e 100644 --- a/TODO +++ b/TODO @@ -20,6 +20,9 @@ placed on hold during rc freeze. * cvsserver updates (Damien Diederen with help by Frank Lichtenheld) $gmane/78188 +* use single database to serve more than one cvsserver instances (Josh Elsasser) + $gmane/78366 + * rewriting annotated tags in filter-branch (Brandon Casey) $gmane/78286 From 5d403d8039ff60c9ed720c12e7a0b7c24a042abd Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Apr 2008 22:09:23 -0700 Subject: [PATCH 0304/2612] topic: optionally add test markers. --- git-topic.perl | 72 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/git-topic.perl b/git-topic.perl index 966dadd9b070d7..7c241e54d9d53c 100755 --- a/git-topic.perl +++ b/git-topic.perl @@ -12,6 +12,7 @@ my @mark = ('.', '?', '-', '+'); my $all = 0; my $merges = 0; +my $tests = 0; my @custom_stage; my @custom_mark; @@ -20,6 +21,7 @@ "stage=s" => \@custom_stage, "mark=s" => \@custom_mark, "merges!" => \$merges, + "tests!" => \$tests, "all!" => \$all) or die; @@ -75,6 +77,46 @@ sub rebase_marker { return '*'; } +my %atlog_next = (); +my %atlog_test = (); + +sub next_marker { + my ($topic) = @_; + return '' if (!$tests); + return '??' if (!exists $atlog_next{$topic}); + for ($atlog_next{$topic}) { + my ($merge, $test) = ('*', '*'); + if (/rerere ok/) { + $merge = 'R'; + } elsif (/conflict (\d+)/) { + if ($1 < 10) { + $merge = $1; + } else { + $merge = 'X'; + } + } + $test = 'X' if (/test error/); + return "$merge$test"; + } +} + +sub test_marker { + my ($commit) = @_; + return '' if (!$tests); + my $tree = `git rev-parse "$commit^{tree}"`; + chomp($tree); + return "?" if (!exists $atlog_test{$tree}); + for ($atlog_test{$tree}) { + if (/build error/) { + return 'B'; + } elsif (/test error/) { + return 'X'; + } else { + return ' '; + } + } +} + sub describe_topic { my ($topic) = @_; @@ -90,20 +132,39 @@ sub describe_topic { } my @in_next = read_revs_short('^master', $stage[0]); +my @topic = (); + +my @topic_pattern = map { "refs/heads/$_" } (@ARGV ? @ARGV : $topic_pattern); open(TOPIC, '-|', qw(git for-each-ref), '--sort=-authordate', '--format=%(objectname) %(authordate) %(refname)', - "refs/heads/$topic_pattern") + @topic_pattern) or die; -my @topic = (); while () { chomp; my ($sha1, $date, $topic) = m|^([0-9a-f]{40})\s(.*?)\srefs/heads/(.+)$| or next; push @topic, [$sha1, $date, $topic]; } +close(TOPIC); + +if (open(AT, "Meta/AT.log")) { + my $next = `git rev-parse --verify refs/heads/next`; + chomp $next; + while () { + if (/^N (.{40}) (.{40}) (.*)$/ && $1 eq $next) { + $atlog_next{$2} = $3; + next; + } + if (/^A (.{40}) (.*)/) { + $atlog_test{$1} = $2; + next; + } + } + close(AT); +} my @last_merge_to_next = (); @@ -121,7 +182,9 @@ sub describe_topic { } } - print '*' . rebase_marker($sha1, $stage[0], \@in_next); + print '*' . + next_marker($sha1) . + rebase_marker($sha1, $stage[0], \@in_next); my $count = ""; if (1 < @revs) { $count = " " . (scalar @revs) . " commits"; @@ -136,6 +199,9 @@ sub describe_topic { if ($mark < @mark) { $mark = $mark[$mark]; } + if ($tests) { + $mark = test_marker($item->[0]) . $mark; + } wrap_print("$mark $item->[1]"); } } From 6c48740c11f22885b949399b3a95def3e431abbf Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Apr 2008 22:21:12 -0700 Subject: [PATCH 0305/2612] AT: automated test loop --- .gitignore | 3 + AT | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100644 .gitignore create mode 100755 AT diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000000..4d8f04330c062f --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/AT.log +/AT.log.bak +/AT.build-logs/ diff --git a/AT b/AT new file mode 100755 index 00000000000000..e3acfd92139761 --- /dev/null +++ b/AT @@ -0,0 +1,196 @@ +#!/bin/sh + +log=Meta/AT.log +>>"$log" +buildlog=Meta/AT.build-logs +mkdir -p "$buildlog" +t="/tmp/AT.$$" + +trap 'rm -f "$t.*"; exit' 0 1 2 3 15 + +_x40="[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]" +_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" + +log_prune () { + cp "$log" "$log.bak" + + git for-each-ref --format='%(objectname)' 'refs/heads/*/*' | + git rev-list --not ko/maint --not --stdin | + while read commit + do + git rev-parse --verify "$commit^{tree}" + done | sort -u >"$t.tree0" + sed -ne "s/A \($_x40\) .*/\1/p" "$log" | sort -u >"$t.tree1" + comm -13 "$t.tree0" "$t.tree1" | sed -e 's|.*|/^A &/d|' >"$t.prune" + + next=$(git rev-parse --verify "refs/heads/next^0") + ko_next=$(git rev-parse --verify "refs/remotes/ko/next^0") + echo "/^N /{ + s/^N $next /&/ + t ok + s/^N $ko_next /&/ + t ok + d + : ok +}" >>"$t.prune" + + sed -f "$t.prune" "$log" >"$t.pruned" + cat "$t.pruned" >"$log" +} + +check_skip_test () { + GIT_SKIP_TESTS= + git diff --name-only ko/master "$1" >"$t.d" + if ! grep -q -e git-svn "$t.d" + then + GIT_SKIP_TESTS="$GIT_SKIP_TESTS t91??" + fi + if ! grep -q -e git-cvsexportcommit "$t.d" + then + GIT_SKIP_TESTS="$GIT_SKIP_TESTS t9200" + fi + if ! grep -q -e git-cvsimport "$t.d" + then + GIT_SKIP_TESTS="$GIT_SKIP_TESTS t9600" + fi + if test -n "$GIT_SKIP_TESTS" + then + export GIT_SKIP_TESTS + else + unset GIT_SKIP_TESTS + fi +} + +autotest () { + commit=$(git rev-parse --verify "$1^0") && + tree=$(git rev-parse --verify "$commit^{tree}") || return 1 + grep -s "^A $tree " "$log" >/dev/null && return 0 + o="$buildlog/$tree" + + git reset -q --hard HEAD^0 && + git checkout -q "$commit^0" || return 1 + + check_skip_test "$tree" + + PAGER= git show -s --pretty='format:* %h %s%n' "$commit" -- + if ! Meta/Make -pedantic >"$o" 2>&1 + then + status="build error" + elif ! Meta/Make -pedantic test >>"$o" 2>&1 + then + status="test error" + else + status=ok + rm -f "$o" + fi + : Meta/Make clean >/dev/null 2>&1 + echo "A $tree $status" >>"$log" + echo "$status" +} + +append_to_status () { + if test -z "$status" + then + status="$1" + else + status="$status; $1" + fi +} + +nexttest () { + mb=$(git merge-base "$commit" "$next") || return 1 + test "$mb" = "$commit" && return 0 + grep -s "^N $next $commit " "$log" >/dev/null && return 0 + + branch="${refname#refs/heads/}" + git reset -q --hard next^0 + + echo "* $branch" + + status= skip_build= + if ! git merge "$commit" >/dev/null 2>&1 + then + conflict_count=$(git ls-files -u | + sed -e 's/.* //' | + sort -u | + xargs grep -e '^<<<<<<< ' | + wc -l) + if test $conflict_count = 0 + then + append_to_status "rerere ok" + else + skip_build=t + append_to_status "conflict $conflict_count" + fi + fi + if test -z "$skip_build" + then + o="$buildlog/$commit" + check_skip_test "$commit" + if ! Meta/Make -pedantic >"$o" 2>&1 + then + append_to_status "build error" + elif ! Meta/Make -pedantic test >>"$o" 2>&1 + then + append_to_status "test error" + else + append_to_status "test ok" + rm -f "$o" + fi + fi + : Meta/Make clean >/dev/null 2>&1 + echo "N $next $commit $status" >>"$log" + echo "$status" +} + +loop () { + Meta/Make clean >/dev/null 2>&1 + git reset --hard -q + git checkout -q HEAD^0 + next=$(git rev-parse --verify "refs/remotes/ko/next^0") + + while : + do + log_prune + + date + + l0=$(ls -l "$log") + + git for-each-ref --format='%(objectname)' 'refs/heads/*/*' | + git rev-list --not ko/maint ko/master --not --stdin | + while read commit + do + autotest "$commit" || echo "oops?" + done + + l1=$(ls -l "$log") + test "$l0" = "$l1" || continue + + git for-each-ref --format='%(objectname) %(refname)' \ + 'refs/heads/*/*' | + while read commit refname + do + nexttest "$commit" "$refname" || echo "oops?" + done + + l1=$(ls -l "$log") + test "$l0" = "$l1" || continue + + sleep 600 || exit + done +} + +case "$#" in +0) + loop + exit ;; +esac + +( + git rev-list --no-walk "$@" 2>/dev/null || git rev-list "$@" +) | +while read commit +do + autotest "$commit" +done From fc5273b75c32b84dd173236d232bf53a079d5c0a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 5 May 2008 23:45:05 -0700 Subject: [PATCH 0306/2612] Update with some unresolved issues. --- TODO | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/TODO b/TODO index fb7a8331ef866e..2aedf578d99510 100644 --- a/TODO +++ b/TODO @@ -8,23 +8,33 @@ The latest copy of this document is found at ---------------------------------------------------------------- -Issues that are unconcluded, lack enough discussions to proceed, and/or -placed on hold during rc freeze. +Possible bug not diagnosed yet -* ff=only (Sverre Hvammen Johansen) - $gmane/78250 +* "git commit --interactive" allows same tree as parent to be recorded -* more help backends (Christian Couder) - $gmane/78150 +Message-ID: + +* "git daemon" and log rotation (Dscho) + +Message-ID: -* cvsserver updates (Damien Diederen with help by Frank Lichtenheld) - $gmane/78188 +Issues that are unconcluded or need a fresh infusion of kerosene to +firestart them again. -* use single database to serve more than one cvsserver instances (Josh Elsasser) - $gmane/78366 +* cvsserver improvements (Fredrik Noring) -* rewriting annotated tags in filter-branch (Brandon Casey) - $gmane/78286 +Needs third-party confirmation and then properly applicable patches. + +* Prepare cvsimport for fixed cvsps (David Mansfield) + +Message-Id: <1207100091.10532.64.camel@gandalf.cobite.com> + +* ff=only (Sverre Hvammen Johansen) + +An updated series posted; author refuses to respond to comments; + +* more help backends (Christian Couder) + $gmane/78150 * fsck --lost-found (me) $gmane/78267 @@ -41,23 +51,12 @@ placed on hold during rc freeze. * mailinfo extention to extract Message-ID and others (Anton Gladkov) $gmane/78006 -* add -p with mode change (Jeff King) - $gmane/78340 - -* rebase -p - $gmane/78074 - * synopsys: use {} instead of () for grouping alternatives (Jari Aalto) $gmane/72243 * "[alias] st = status" and "cd .git && git st" (Jeff King) $gmane/72327 -* fetch with "refs/*:refs/*" errors out erroneously (Daniel) - $gmane/77335 - -* D/F conflict to merge a tree with D into a tree with F - * "git fetch" does not exit with non-zero status when it failed to update some refs due to non-ffness (Daniel) $gmane/77178 @@ -69,7 +68,7 @@ placed on hold during rc freeze. * use "assume unchanged" bit to implement narrow checkout $gmane/77046 -* send-pack vs receive-pack history exchange +* send-pack vs receive-pack history exchange (me) * zlib abstraction (Marco) $gmane/72262 From 0003692409f153dd725b3455dfc2e128276cfbe2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 19 Jun 2008 00:15:17 -0700 Subject: [PATCH 0307/2612] MaintNotes update post 1.5.6 Signed-off-by: Junio C Hamano --- MaintNotes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MaintNotes b/MaintNotes index 797a6fb4e51f35..85c85e40d19aa8 100644 --- a/MaintNotes +++ b/MaintNotes @@ -92,7 +92,7 @@ but they are not expected to be anything major, and more importantly quickly and trivially fixable. Every now and then, a "feature release" is cut from the tip of this branch and they typically are named with three dotted decimal digits. The -last such release was 1.5.5 done on Apr 7th this year. You +last such release was 1.5.6 done on Jun 18th this year. You can expect that the tip of the "master" branch is always more stable than any of the released versions. @@ -101,7 +101,7 @@ from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was 1.5.4.5. +release they are updates to; the last such release was 1.5.5.4. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. From 45b738524aa028744bd84cceedc13779d6b38922 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 19 Jun 2008 00:19:57 -0700 Subject: [PATCH 0308/2612] Make: force LC_ALL=C --- Make | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Make b/Make index bf492c96e44334..77f3f7dbb58924 100755 --- a/Make +++ b/Make @@ -7,8 +7,8 @@ G=/opt/packrat/playpen/public/in-place/git/index/gitweb_config.perl GIT=$HOME/git-master/bin/git PATH=/usr/bin:/bin LANG=C -LC_CTYPE=C -export PATH LANG LC_CTYPE +LC_ALL=C +export PATH LANG LC_ALL # for now... #GIT_SVN_NO_LIB=1 From 08ac04a489c888d8b47a09c7ce01ead800f8ac40 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 19 Jun 2008 00:20:21 -0700 Subject: [PATCH 0309/2612] SE: use the newer Cc suppression scheme --- SE | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SE b/SE index 067f2acbff1202..d48a919a9c02cc 100755 --- a/SE +++ b/SE @@ -28,8 +28,7 @@ git send-email \ --from="$me" \ --envelope-sender="$me" \ --to="$to" \ - --no-signed-off-cc \ - --suppress-from \ + --suppress-cc=all \ --smtp-server=$smtp \ $dryrun \ "$@" From 167e415e02f99d69fb2d02e75a08cc62030a27ac Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 26 Jun 2008 21:12:17 -0700 Subject: [PATCH 0310/2612] Make: fix test installation. --- Make | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Make b/Make index 77f3f7dbb58924..74d2f1dc41c63a 100755 --- a/Make +++ b/Make @@ -21,18 +21,20 @@ branch=`expr "$head" : 'refs/heads/\(.*\)'` || branch=detached case "$branch" in next | maint | master | pu) - d="prefix=$HOME/git-$branch" ;; + prefix="$HOME/git-$branch" + ;; snap) v=`$GIT describe HEAD` expr "$v" : '.*-g[0-9a-f]*$' >/dev/null && { echo >&2 "You are on 'snap' but $v is not an official version." exit 1 } - d="prefix=$HOME/git-snap-$v" + prefix="$HOME/git-snap-$v" ;; *) - d="prefix=$HOME/git-test gitexecdir=\$(prefix)/libexec/git-core" ;; + prefix="$HOME/git-test" ;; esac +d="prefix=$prefix" : ${O=-O2} @@ -71,7 +73,7 @@ sh -c 'git describe --abbrev=4 HEAD' >/dev/null 2>&1 || { make $d \ GITWEB_CONFIG=$G \ PYTHON_PATH=/usr/bin/python2.4 \ - ETC_GITCONFIG=$d/etc/gitconfig \ + ETC_GITCONFIG=$prefix/etc/gitconfig \ CFLAGS="$O -Wall -Wdeclaration-after-statement -g" \ "$@" status=$? From 950a229dc9ebbb7687f95ba930cb9ba7db1e76f4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 26 Jun 2008 21:13:55 -0700 Subject: [PATCH 0311/2612] DoKernelOrg: allow building older maint releases --- DoKernelOrg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DoKernelOrg b/DoKernelOrg index b84293a6329206..fa296a1470551f 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -41,7 +41,7 @@ case "$1" in done >:all.log 2>&1 ;; -maint | master) +maint | maint-* | master) case `hostname` in hera.kernel.org) narch='x86_64 i386' From bfb930f75f192f7466eadb4b35cda7359f4e3a95 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 27 Jun 2008 04:32:25 +0000 Subject: [PATCH 0312/2612] DoKernelOrg: make sure to remove leftover version file Signed-off-by: Junio C Hamano --- DoKernelOrg | 2 +- Make | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DoKernelOrg b/DoKernelOrg index fa296a1470551f..7083fbbd3a2a3b 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -15,7 +15,6 @@ make clean >/dev/null 2>&1 && git reset --hard && make clean >/dev/null 2>&1 && git checkout master && -git pull . origin && make clean >/dev/null 2>&1 && case "$1" in @@ -42,6 +41,7 @@ case "$1" in ;; maint | maint-* | master) + rm -f version case `hostname` in hera.kernel.org) narch='x86_64 i386' diff --git a/Make b/Make index 74d2f1dc41c63a..001992d7bc0519 100755 --- a/Make +++ b/Make @@ -49,7 +49,7 @@ do o=-Wold-style-definition ;; esac O="$O -Werror $o -std=c99 -Wno-pointer-to-int-cast" - O="$O -fwrapv -fno-strict-overflow" + # O="$O -fwrapv -fno-strict-overflow" ;; --) shift From 37b2344e1a7d37ff3655269d993bd9654bbf4a01 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 5 Jul 2008 22:07:33 -0700 Subject: [PATCH 0313/2612] Announce: RPM builders are now running FC9 --- Announce | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Announce b/Announce index 6541ee6cf937d8..40cb3097a7b50a 100755 --- a/Announce +++ b/Announce @@ -30,10 +30,14 @@ The latest $kind release GIT $vername is available at the usual places: http://www.kernel.org/pub/software/scm/git/ - git-$vername.tar.{gz,bz2} (tarball) + git-$vername.tar.{gz,bz2} (source tarball) git-htmldocs-$vername.tar.{gz,bz2} (preformatted docs) git-manpages-$vername.tar.{gz,bz2} (preformatted docs) - RPMS/\$arch/git-*-$vername-1.\$arch.rpm (RPM) + +The RPM binary packages for a few architectures are also provided as +courtesy. + + RPMS/\$arch/git-*-$vername-1.fc9.\$arch.rpm (RPM) BLURB HERE BLURB HERE BLURB HERE From 773306b63625647e925a570a7690243e63976f0d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 5 Jul 2008 22:09:41 -0700 Subject: [PATCH 0314/2612] DoKernelOrg: built everything and then finally push them out --- DoKernelOrg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DoKernelOrg b/DoKernelOrg index 7083fbbd3a2a3b..a03a89162156bc 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -78,8 +78,8 @@ maint | maint-* | master) esac exit $status ;; *) - ln -f git-$V.tar.gz $G/. && make dist-doc >>./:all.log 2>&1 && + ln -f git-$V.tar.gz $G/. && ln -f git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. ;; esac >>./:all.log 2>&1 && From 0e567b5879549b62db5d5bc75f29fa9e0b3e8f57 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 5 Jul 2008 22:10:40 -0700 Subject: [PATCH 0315/2612] taboo: taboo script update --- taboo.perl | 115 ++++------------------------------------------------- 1 file changed, 7 insertions(+), 108 deletions(-) diff --git a/taboo.perl b/taboo.perl index 2452c3f278e5b9..37c731d7a0745a 100755 --- a/taboo.perl +++ b/taboo.perl @@ -1,5 +1,4 @@ #!/usr/bin/perl -w -# $Id: taboo.perl,v 1.4 2007-04-01 00:24:31 junio Exp $ my $tmpl = ' if (%%PATTERN%%) { print "$lineno ${_}matches %%QPATTERN%%\n"; @@ -66,9 +65,6 @@ m/From:.*MAILER-DAEMON/i m/^Mailing-List:/i m/^list-/i -/Friend\@public\.com/i -/\@sexyfun\.net/i -/\@safestory\.com/ /^subject: ndn: /i /^subject:\s*RCPT:/i /^subject:\s*Delivery Confirmation\b/i @@ -77,56 +73,27 @@ /^subject:.*Receipt Confirmation\b/i /^subject:.*Failed mail\b/i /^subject:.*Returned mail\b/i -/^subject:.*Linus Bus Factor\b/i /^subject:\s*unable to deliver mail\b/i /^subject:\s.*\baway from my mail\b/i /^subject:\s*Autoreply/i /#field0#/ -/\@5Business.cc/i -/subject:.*ADV:/i -/subject:.*=?ISO-2022-JP?/i -/subject:.*Snowhite and the Seven Dwarfs/i m%content-type:.*text/html%i /x-mailing-list:.*\@vger\.kernel\.org/i # DATE: 25 Jun 01 3:08:39 AM m/DATE:\s*..\s...\s..\s.*:..:..\s..\s*$/i -m/date:.*=\?.*\?=/i -#/charset=.*windows-/i -#/charset=.*utf-/i -/Bill s\.1618 TITLE III/i -/Advanced Mass Sender/i -/Jamail / -m/subject:.*China-diesel/i -m!diesel fuel injection! -m/Diffondi/i +m/nntp-server.caltech.edu/ m/Mail Bomber/ m/X-Mailman-Version:/ -m/business letter from Beijing/i -m/camelot.co.jp/ m/X-EM-Registration:/ m/x-esmtp:/ m/Local time zone must be set/ -m/tangfeng/i m/X-Mailer:.*eMerge/i m/X-Mailer:.Trade-Navigator/i -m/=?ISO-8859-1?Q?INFORMA=C7=C3O?=/i m/From:.*MAILER-DAEMON/i -m/Subject:.*Antigen / -m/From:.*grumph.pakistanmail.com/ -m/CLASSIFIED/i -m/OTCBB:/ -m/Content-Type:.*charset=.*gb2312/ -m/Subject:.*=\?big5\?/ -m/Subject:.*=\?gb2312\?/ -m/X-Mailer:\s+eGroups/ -m/netatlantic.com/ -m/instrument.com.cn/ m/X-Mailer:.*Group Mail/ m/^Status:/ m/^X-Status:/ m/X-Set:/ -m/<>/ -m/^Subject:.*=?GB2312?/ m/^X-Mailer:.*JiXing/ m/^X-Mailer:.*MailXSender/ m!Message-Id:.*<.*\@vger.kernel.org>! @@ -137,35 +104,12 @@ m/Subject:.*[Vv]irus [Aa]lert/ m/^Subject:\s*Report to Sender/ m/^Subject:.*AntiVir ALARM/ -m/^Subject:.*BEST FILESYSTEM/ -m/^Subject:.*REISER4 FOR INCLUSION/ -m/^Content-Transfer-Encoding:\s*base64/i -m/CONFIDENTIAL/ -m/CONFIDENCE/ -m/PAYCHECK/ m!^X-Library:\s*Indy! m!Content-Type:\s*application/x-msdownload! m!Conetnt-Type:\s*application/msword! m!MiME-! m!netdev-bounce\@oss\.sgi\.com! -m!polyglot.com.cn!i m!Undeliverable:! -m!Bullet Proof! -m!qzsoft_directmail! -m!list of ingredients! -m!Power Diet! -m!big\@boss\.com! -m!from mail pickup service by smtp32.wxs.nl! -m!argentina.com!i -m!argentina.net!i -m!Employment Opportunity!i -m!Fudah Sanko!i -m!erotik!i -m!erotic!i -m!kamasutra!i -m!URGENT! -m!Panda Antivirus ha realizado!i -m!movieglobe!i m!Syntax error in! m!^Illegal-Object:! m!Subject:.*paycheck!i @@ -179,51 +123,22 @@ m!X-Spam-Flag:.*YES! m!Subject:.*\sSARS\s!i m!Subject:.*MMS Notification! -m!Subject:.*Bitkeeper! -m!Subject:.*Switching to the OSL License.*! -m!Subject:.*RMS and reactions to him! -m!Subject:.*GNU server.*Gimme a break.*! -m!Subject:.*MIMEDefang Notification! -m!Subject:.*Thank you.*! -m!Subject:.*That movie.*! -m!Subject:.*Your details.*! -m!Subject:.*My details.*! -m!Subject:.*\svirus\s!i -m!Subject:.* viruses ! -m!Subject:.*\sContent.violation! -m!Subject:.*Symantec! m!Subject:.*Rejected Mail! m!Subject:.*Report to Recipient! m!Subject:.*You sent potentially! -m!Subject:.*Content filtering! m!Subject:.*penis.*!i m!WAVA Postmaster! m!^SUBJECT:! m!Delivered-To:! m!Subject:.*Footprints! -m!^From:.*matthewdenton\.com>!i -m!Klein Becker! -m!kleinbecker! -m!MOTSCO! -m!paypal! -m!\@tcob1.net! m!^From:\s*Majordomo! -m!Cheap V.AGRA! -m!Subject:\s+fake\s*$! -m!lyris.net! m!Subject:\s+Out of Office AutoReply! m!Content-Type: multipart/alternative! -m!barrow_dj\@yahoo.com! -m!biowiks.com! m!From:.*amavisd-new! m!Subject:.*found.*virus!i m!Subject:.*As Seen on CNN!i -m!Subject:.*Winningest!i m!Subject:.*Mail Delivery! -m!qiaoxiaol\@126.com!i m!Subject:.*Essential.*Software.*On.*CD!i -m!computeradmin.org!i -m!dfjndfv.com/! m!LIPITOR! m!VIOXX! m!XANAX! @@ -231,39 +146,25 @@ m!PROZAC! m!VALIUM! m!seen it on TV! -m!olympic\@! -m!test\@216\.! m!Valium! m!Prozac! -m!40free.net.ph! m!ScanMail for Lotus Notes! m!InternetBank Agreement! m!X-WEBC-Mail-From-Script:! m!X-Mailer: RLSP Mailer! m!Subject: Rediff\'s Auto Response! -m!Subject:.*Linux Kernel Subversion Howto! m!Email account utilization warning! m!From:.*Lyris.List! m!Listar command results! m!EHLO vger.kernel.org! m!HELO vger.kernel.org! m!Subject:\s*BOUNCE ! -m!Uncle Den Date: Sat, 12 Jul 2008 00:44:14 -0700 Subject: [PATCH 0316/2612] Update MaintNotes -- 1.6.0 will have most of the Windows port --- MaintNotes | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/MaintNotes b/MaintNotes index 85c85e40d19aa8..a61a37bcf90760 100644 --- a/MaintNotes +++ b/MaintNotes @@ -228,10 +228,9 @@ relying on heavily: - J. Bruce Fields on documentaton issues. - Johannes Schindelin, Johannes Sixt and others for their effort - to move things forward on the Windows front. Although my - repository does not have much from the effort of MinGW team, - I expect a merge into mainline will happen so that everybody - can work from the same codebase. + to move things forward on the Windows front. Most of the fruits + from their porting efforts have been merged to the mainline git.git + repository in 1.6.0 release. - People on non-Linux platforms for keeping their eyes on portability; especially, Randal Schwartz, Theodore Ts'o, From 41a2728b7b325c1dc51d438cd64fcde1ad53b646 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 13 Jul 2008 22:38:51 -0700 Subject: [PATCH 0317/2612] MaintNotes: Post 1.5.6.3 update --- MaintNotes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MaintNotes b/MaintNotes index a61a37bcf90760..0c85720a727d9c 100644 --- a/MaintNotes +++ b/MaintNotes @@ -101,7 +101,7 @@ from "master" at that point. Obvious, safe and urgent fixes after a feature release are applied to this branch and maintenance releases are cut from it. The maintenance releases are named with four dotted decimal, named after the feature -release they are updates to; the last such release was 1.5.5.4. +release they are updates to; the last such release was 1.5.6.3. New features never go to this branch. This branch is also merged into "master" to propagate the fixes forward. From f52a31d44839ca0e526120e0e42817d348e9451f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 15 Jul 2008 19:37:48 -0700 Subject: [PATCH 0318/2612] TODO update --- TODO | 43 +++---------------------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/TODO b/TODO index 2aedf578d99510..cf48c8feadb6e9 100644 --- a/TODO +++ b/TODO @@ -8,63 +8,26 @@ The latest copy of this document is found at ---------------------------------------------------------------- -Possible bug not diagnosed yet - -* "git commit --interactive" allows same tree as parent to be recorded - -Message-ID: - -* "git daemon" and log rotation (Dscho) - -Message-ID: - -Issues that are unconcluded or need a fresh infusion of kerosene to -firestart them again. - -* cvsserver improvements (Fredrik Noring) - -Needs third-party confirmation and then properly applicable patches. +* Safer handling of grafts (Linus, me) + $gmane/37744/focus=37866. Partially in 'pu' but stalled due to breakage in + "shallow clone". * Prepare cvsimport for fixed cvsps (David Mansfield) Message-Id: <1207100091.10532.64.camel@gandalf.cobite.com> -* ff=only (Sverre Hvammen Johansen) - -An updated series posted; author refuses to respond to comments; - -* more help backends (Christian Couder) - $gmane/78150 - -* fsck --lost-found (me) - $gmane/78267 - -* core.inithook (Dscho) - $gmane/78123 - * receive.localBranches = { refuse | allow } (Dscho) $gmane/78065 * autosetting core.ignorecase (Dmitry Potapov) $gmane/78176 -* mailinfo extention to extract Message-ID and others (Anton Gladkov) - $gmane/78006 - * synopsys: use {} instead of () for grouping alternatives (Jari Aalto) $gmane/72243 * "[alias] st = status" and "cd .git && git st" (Jeff King) $gmane/72327 -* "git fetch" does not exit with non-zero status when it failed to update - some refs due to non-ffness (Daniel) - $gmane/77178 - -* "git fetch" shows error when dangling symref exists at the remote - but does not really error out (Samuel Tardieu) - $gmane/76658 - * use "assume unchanged" bit to implement narrow checkout $gmane/77046 From 56210413e5cf6e4e7b561f2af4c722dbaf5ea481 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 Jul 2008 22:57:44 -0700 Subject: [PATCH 0319/2612] Update What's Cooking -- do not lose graduated topics --- UWC | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/UWC b/UWC index 846dc6b112e3eb..868b41ba28f389 100755 --- a/UWC +++ b/UWC @@ -127,6 +127,7 @@ sub print_whats_cooking { print "\n", "-" x 64, "\n"; print "[$group]\n"; for my $topic (@{$wc->{" $group"}}) { + next if ($topic->{"head"} eq ''); print "\n", $topic->{"head"}; print $topic->{"names"}; if ($topic->{"text"} ne '') { @@ -144,6 +145,7 @@ sub delete_topic { sub merge_whats_cooking { my ($old_wc, $new_wc) = @_; my $group; + my @gone = (); for $group (@{$old_wc->{"group list"}}) { for my $topic (@{$old_wc->{" $group"}}) { @@ -151,12 +153,10 @@ sub merge_whats_cooking { my $newtopic = delete $new_wc->{"topic hash"}{$name}; if (!defined $newtopic) { - $topic->{"text"} = ("<{"head"} . - $topic->{"names"} . - ">>\n\n" . - $topic->{"text"}); + push @gone, +{ @{[ %$topic ]} }; + $topic->{"text"} = ""; $topic->{"names"} = ""; + $topic->{"head"} = ""; next; } if (($newtopic->{"names"} ne $topic->{"names"}) || @@ -180,6 +180,14 @@ sub merge_whats_cooking { } if (%{$new_wc->{"topic hash"}}) { + if (@gone) { + $group = 'Graduated to "master"'; + if (!exists $old_wc->{" $group"}) { + unshift @{$old_wc->{"group list"}}, $group; + $old_wc->{" $group"} = []; + } + push @{$old_wc->{" $group"}}, @gone; + } $group = "New Topics"; if (!exists $old_wc->{" $group"}) { unshift @{$old_wc->{"group list"}}, $group; From f815ebfb796bbf072f1f01cd32b7b637819391e8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 Jul 2008 22:58:59 -0700 Subject: [PATCH 0320/2612] What's cooking in git.git (Jun 2008, issue #01; Sat, 21) --- whatscooking.txt | 306 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 306 insertions(+) create mode 100644 whatscooking.txt diff --git a/whatscooking.txt b/whatscooking.txt new file mode 100644 index 00000000000000..31b12bd582a1a1 --- /dev/null +++ b/whatscooking.txt @@ -0,0 +1,306 @@ +What's cooking in git.git (Jun 2008, issue #01; Sat, 21) +-------------------------------------------------------- + +Here are the topics that have been cooking. Commits prefixed +with '-' are only in 'pu' while commits prefixed with '+' are +in 'next'. + +The topics list the commits in reverse chronological order. + +It already is beginning to become clear what 1.6.0 will look like. What's +already in 'next' all are well intentioned (I do not guarantee they are +already bug-free --- that is what cooking them in 'next' is for) and are +good set of feature enhancements. But bigger changes will be: + + * MinGW will be in. + + * /usr/bin/git-cat-file is no more. The bulk of the git commands will + move to /usr/libexec/git-core/ or somesuch. + + * git-merge will be rewritten in C. + +Currently tip of 'pu' is broken and does not pass tests, as j6t/mingw has +interaction with dr/ceiling and jc/merge-theirs has interaction with +mv/merge-in-c. + +---------------------------------------------------------------- +[New Topics] + +* jc/merge-theirs (Fri Jun 20 00:17:59 2008 -0700) 2 commits + - git-merge-recursive-{ours,theirs} + - git-merge-file --ours, --theirs + +Punting a merge by discarding your own work in conflicting parts but still +salvaging the parts that are cleanly automerged. It is likely that this +will result in nonsense mishmash, but somehow often people want this, so +here they are. The interface to the backends may need to change, though. + +* lt/racy-empty (Tue Jun 10 10:44:43 2008 -0700) 1 commit + + racy-git: an empty blob has a fixed object name + +* ph/mergetool (Mon Jun 16 17:33:41 2008 -0600) 1 commit + + Remove the use of '--' in merge program invocation + +* j6t/mingw (Sat Nov 17 20:48:14 2007 +0100) 38 commits + - compat/pread.c: Add a forward declaration to fix a warning + - Windows: Fix ntohl() related warnings about printf formatting + - Windows: TMP and TEMP environment variables specify a temporary + directory. + - Windows: Make 'git help -a' work. + - Windows: Work around an oddity when a pipe with no reader is + written to. + - Windows: Make the pager work. + - When installing, be prepared that template_dir may be relative. + - Windows: Use a relative default template_dir and ETC_GITCONFIG + - Windows: Compute the fallback for exec_path from the program + invocation. + - Turn builtin_exec_path into a function. + - Windows: Use a customized struct stat that also has the st_blocks + member. + - Windows: Add a custom implementation for utime(). + - Windows: Add a new lstat and fstat implementation based on Win32 + API. + - Windows: Implement a custom spawnve(). + - Windows: Implement wrappers for gethostbyname(), socket(), and + connect(). + - Windows: Work around incompatible sort and find. + - Windows: Implement asynchronous functions as threads. + - Windows: Disambiguate DOS style paths from SSH URLs. + - Windows: A rudimentary poll() emulation. + - Windows: Change the name of hook scripts to make them not + executable. + - Windows: Implement start_command(). + - Windows: A pipe() replacement whose ends are not inherited to + children. + - Windows: Wrap execve so that shell scripts can be invoked. + - Windows: Implement setitimer() and sigaction(). + - Windows: Fix PRIuMAX definition. + - Windows: Implement gettimeofday(). + - Windows: Handle absolute paths in + safe_create_leading_directories(). + - Windows: Treat Windows style path names. + - setup.c: Prepare for Windows directory separators. + - Windows: Work around misbehaved rename(). + - Windows: always chmod(, 0666) before unlink(). + - Windows: A minimal implemention of getpwuid(). + - Windows: Implement a wrapper of the open() function. + - Windows: Strip ".exe" from the program name. + - Windows: Use the Windows style PATH separator ';'. + - Add target architecture MinGW. + - Compile some programs only conditionally. + - Add compat/regex.[ch] and compat/fnmatch.[ch]. + +No explanation is necessary ;-). + +* sn/static (Thu Jun 19 08:21:11 2008 +0900) 2 commits + + config.c: make git_env_bool() static + + environment.c: remove unused function + +* lt/config-fsync (Wed Jun 18 15:18:44 2008 -0700) 4 commits + + Add config option to enable 'fsync()' of object files + + Split up default "i18n" and "branch" config parsing into helper + routines + + Split up default "user" config parsing into helper routine + + Split up default "core" config parsing into helper routine + +* lw/gitweb (Thu Jun 19 22:03:21 2008 +0200) 1 commit + + gitweb: standarize HTTP status codes + +* mv/merge-in-c (Fri Jun 20 01:22:36 2008 +0200) 11 commits + - Add new test to ensure git-merge handles more than 25 refs. + - Build in merge + - Introduce filter_independent() in commit.c + - Introduce get_octopus_merge_bases() in commit.c + - git-fmt-merge-msg: make it usable from other builtins + - Move read_cache_unmerged() to read-cache.c + - parseopt: add a new PARSE_OPT_ARGV0_IS_AN_OPTION option + - Add new test to ensure git-merge handles pull.twohead and + pull.octopus + - Move parse-options's skip_prefix() to git-compat-util.h + - Move commit_list_count() to commit.c + - Move split_cmdline() to alias.c + +* jc/maint-combine-diff-pre-context (Wed Jun 18 23:59:41 2008 -0700) 1 commit + + diff -c/--cc: do not include uninteresting deletion before leading + context + +* lt/maint-gitdir-relative (Thu Jun 19 12:34:06 2008 -0700) 1 commit + + Make git_dir a path relative to work_tree in setup_work_tree() + +---------------------------------------------------------------- +[Actively Cooking] + +* nd/dashless (Wed Nov 28 23:21:57 2007 +0700) 1 commit + + Move all dashed-form commands to libexecdir + +Scheduled for 1.6.0. + +* jc/dashless (Sat Dec 1 22:09:22 2007 -0800) 2 commits + - Prepare execv_git_cmd() for removal of builtins from the + filesystem + - git-shell: accept "git foo" form + +We do not plan to remove git-foo form completely from the filesystem at +this point, but git-shell may need to be updated. + +* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit + + merge: remove deprecated summary and diffstat options and config + variables + +* dr/ceiling (Mon May 19 23:49:34 2008 -0700) 4 commits + + Eliminate an unnecessary chdir("..") + + Add support for GIT_CEILING_DIRECTORIES + + Fold test-absolute-path into test-path-utils + + Implement normalize_absolute_path + +* jn/web (Tue Jun 10 19:21:44 2008 +0200) 2 commits + + gitweb: Separate generating 'sort by' table header + + gitweb: Separate filling list of projects info + +* rs/archive-ignore (Sun Jun 8 18:42:33 2008 +0200) 1 commit + + Teach new attribute 'export-ignore' to git-archive + +* rg/gitweb (Fri Jun 6 09:53:32 2008 +0200) 1 commit + + gitweb: remove git_blame and rename git_blame2 to git_blame + +* kh/update-ref (Tue Jun 3 01:34:53 2008 +0200) 2 commits + + Make old sha1 optional with git update-ref -d + + Clean up builtin-update-ref's option parsing + +* mo/status-untracked (Thu Jun 5 14:47:50 2008 +0200) 3 commits + + Add configuration option for default untracked files mode + + Add argument 'no' commit/status option -u|--untracked-files + + Add an optional argument to commit/status -u|--untracked- + files option + +* sr/tests (Sun Jun 8 16:04:35 2008 +0200) 3 commits + + Hook up the result aggregation in the test makefile. + + A simple script to parse the results from the testcases + + Modify test-lib.sh to output stats to t/test-results/* + +* jh/clone-packed-refs (Sun Jun 15 16:06:16 2008 +0200) 4 commits + + Teach "git clone" to pack refs + + Prepare testsuite for a "git clone" that packs refs + + Move pack_refs() and friends into libgit + + Incorporate fetched packs in future object traversal + +This is useful when cloning from a repository with insanely large number +of refs. + +* jc/reflog-expire (Sun Jun 15 23:48:46 2008 -0700) 1 commit + - Per-ref reflog expiry configuration + +Perhaps a good foundation for optionally unexpirable stash. As 1.6.0 will +be a good time to make backward incompatible changes, we might make expiry +period of stash 'never' in new repositories. Needs a concensus. + +* lw/perlish (Thu Jun 19 22:32:49 2008 +0200) 2 commits + + Git.pm: add test suite + + t/test-lib.sh: add test_external and test_external_without_stderr + +Beginning of regression tests for Perl part of the system. + +* jk/test (Sat Jun 14 03:28:07 2008 -0400) 5 commits + + enable whitespace checking of test scripts + + avoid trailing whitespace in zero-change diffstat lines + + avoid whitespace on empty line in automatic usage message + + mask necessary whitespace policy violations in test scripts + + fix whitespace violations in test scripts + +Tightens whitespace rules for t/*.sh scripts. + +* pb/fast-export (Wed Jun 11 13:17:04 2008 +0200) 1 commit + + builtin-fast-export: Add importing and exporting of revision marks + +---------------------------------------------------------------- +[Graduated to "master"] + +Nothing today but expect many small ones to come out of 'next' this +weekend. + +---------------------------------------------------------------- +[On Hold] + +* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 7 commits + - blame: show "previous" information in --porcelain/--incremental + format + - git-blame: refactor code to emit "porcelain format" output + + git-blame --reverse + + builtin-blame.c: allow more than 16 parents + + builtin-blame.c: move prepare_final() into a separate function. + + rev-list --children + + revision traversal: --children option + +The blame that finds where each line in the original lines moved to. This +may help a GSoC project that wants to gather statistical overview of the +history. The final presentation may need tweaking (see the log message of +the commit ""git-blame --reverse" on the series). + +The tip two commits are for peeling to see what's behind the blamed +commit, which we should be able to separate out into an independent topic +from the rest. + +* jc/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit + - "git push": tellme-more protocol extension + +Kicked back to 'pu' for now. + +* js/rebase-i-sequencer (Sun Apr 27 02:55:50 2008 -0400) 17 commits + - Use perl instead of tac + - Fix t3404 assumption that `wc -l` does not use whitespace. + - rebase -i: Use : in expr command instead of match. + - rebase -i: update the implementation of 'mark' command + - Add option --preserve-tags + - Teach rebase interactive the tag command + - Add option --first-parent + - Do rebase with preserve merges with advanced TODO list + - Select all lines with fake-editor + - Unify the length of $SHORT* and the commits in the TODO list + - Teach rebase interactive the merge command + - Move redo merge code in a function + - Teach rebase interactive the reset command + - Teach rebase interactive the mark command + - Move cleanup code into it's own function + - Don't append default merge message to -m message + - fake-editor: output TODO list if unchanged + +It is very likely that this whole thing will be reverted from 'next' and +be replaced with the new sequenser series during 1.6.0 cycle. + +* sj/merge (Sat May 3 16:55:47 2008 -0700) 6 commits + - Introduce fast forward option only + - Head reduction before selecting merge strategy + - Restructure git-merge.sh + - Introduce -ff= + - New merge tests + - Documentation for joining more than two histories + +This will interfere with Miklos's rewrite of merge to C. + +* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit + - diff: enable "too large a rename" warning when -M/-C is explicitly + asked for + +This would be the right thing to do for command line use, but gitk will be +hit due to tcl/tk's limitation, so I am holding this back for now. + +* jc/cherry-pick (Wed Feb 20 23:17:06 2008 -0800) 3 commits + - WIP: rethink replay merge + - Start using replay-tree merge in cherry-pick + - revert/cherry-pick: start refactoring call to merge_recursive + +This is meant to improve cherry-pick's behaviour when renames are +involved, by not using merge-recursive (whose d/f conflict resolution is +quite broken), but unfortunately has stalled for some time now. + +* jc/stripspace (Sun Mar 9 00:30:35 2008 -0800) 6 commits + - git-am --forge: add Signed-off-by: line for the author + - git-am: clean-up Signed-off-by: lines + - stripspace: add --log-clean option to clean up signed-off-by: + lines + - stripspace: use parse_options() + - Add "git am -s" test + - git-am: refactor code to add signed-off-by line for the committer + +Just my toy at this moment. + From 093cfb19d18bebfb0d921bed24de8d8b07a681eb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 Jul 2008 22:58:59 -0700 Subject: [PATCH 0321/2612] What's cooking in git.git (Jun 2008, issue #02; Mon, 23) --- whatscooking.txt | 365 +++++++++++++++++++++++++---------------------- 1 file changed, 194 insertions(+), 171 deletions(-) diff --git a/whatscooking.txt b/whatscooking.txt index 31b12bd582a1a1..2054edb7801ed8 100644 --- a/whatscooking.txt +++ b/whatscooking.txt @@ -1,4 +1,4 @@ -What's cooking in git.git (Jun 2008, issue #01; Sat, 21) +What's cooking in git.git (Jun 2008, issue #02; Mon, 23) -------------------------------------------------------- Here are the topics that have been cooking. Commits prefixed @@ -26,75 +26,25 @@ mv/merge-in-c. ---------------------------------------------------------------- [New Topics] -* jc/merge-theirs (Fri Jun 20 00:17:59 2008 -0700) 2 commits - - git-merge-recursive-{ours,theirs} - - git-merge-file --ours, --theirs +* jc/rerere (Sun Jun 22 02:04:31 2008 -0700) 5 commits + - rerere.autoupdate + - t4200: fix rerere test + - rerere: remove dubious "tail_optimization" + - git-rerere: detect unparsable conflicts + - rerere: rerere_created_at() and has_resolution() abstraction -Punting a merge by discarding your own work in conflicting parts but still -salvaging the parts that are cleanly automerged. It is likely that this -will result in nonsense mishmash, but somehow often people want this, so -here they are. The interface to the backends may need to change, though. +* sb/rebase (Sun Jun 22 01:55:50 2008 +0200) 2 commits + + t3404: stricter tests for git-rebase--interactive + + api-builtin.txt: update and fix typo -* lt/racy-empty (Tue Jun 10 10:44:43 2008 -0700) 1 commit - + racy-git: an empty blob has a fixed object name - -* ph/mergetool (Mon Jun 16 17:33:41 2008 -0600) 1 commit - + Remove the use of '--' in merge program invocation - -* j6t/mingw (Sat Nov 17 20:48:14 2007 +0100) 38 commits - - compat/pread.c: Add a forward declaration to fix a warning - - Windows: Fix ntohl() related warnings about printf formatting - - Windows: TMP and TEMP environment variables specify a temporary - directory. - - Windows: Make 'git help -a' work. - - Windows: Work around an oddity when a pipe with no reader is - written to. - - Windows: Make the pager work. - - When installing, be prepared that template_dir may be relative. - - Windows: Use a relative default template_dir and ETC_GITCONFIG - - Windows: Compute the fallback for exec_path from the program - invocation. - - Turn builtin_exec_path into a function. - - Windows: Use a customized struct stat that also has the st_blocks - member. - - Windows: Add a custom implementation for utime(). - - Windows: Add a new lstat and fstat implementation based on Win32 - API. - - Windows: Implement a custom spawnve(). - - Windows: Implement wrappers for gethostbyname(), socket(), and - connect(). - - Windows: Work around incompatible sort and find. - - Windows: Implement asynchronous functions as threads. - - Windows: Disambiguate DOS style paths from SSH URLs. - - Windows: A rudimentary poll() emulation. - - Windows: Change the name of hook scripts to make them not - executable. - - Windows: Implement start_command(). - - Windows: A pipe() replacement whose ends are not inherited to - children. - - Windows: Wrap execve so that shell scripts can be invoked. - - Windows: Implement setitimer() and sigaction(). - - Windows: Fix PRIuMAX definition. - - Windows: Implement gettimeofday(). - - Windows: Handle absolute paths in - safe_create_leading_directories(). - - Windows: Treat Windows style path names. - - setup.c: Prepare for Windows directory separators. - - Windows: Work around misbehaved rename(). - - Windows: always chmod(, 0666) before unlink(). - - Windows: A minimal implemention of getpwuid(). - - Windows: Implement a wrapper of the open() function. - - Windows: Strip ".exe" from the program name. - - Windows: Use the Windows style PATH separator ';'. - - Add target architecture MinGW. - - Compile some programs only conditionally. - - Add compat/regex.[ch] and compat/fnmatch.[ch]. +* sb/maint-rebase (Sun Jun 22 16:07:02 2008 +0200) 1 commit + + git-rebase.sh: Add check if rebase is in progress -No explanation is necessary ;-). +---------------------------------------------------------------- +[Will merge to master soon] -* sn/static (Thu Jun 19 08:21:11 2008 +0900) 2 commits - + config.c: make git_env_bool() static - + environment.c: remove unused function +* lw/gitweb (Thu Jun 19 22:03:21 2008 +0200) 1 commit + + gitweb: standarize HTTP status codes * lt/config-fsync (Wed Jun 18 15:18:44 2008 -0700) 4 commits + Add config option to enable 'fsync()' of object files @@ -103,13 +53,47 @@ No explanation is necessary ;-). + Split up default "user" config parsing into helper routine + Split up default "core" config parsing into helper routine -* lw/gitweb (Thu Jun 19 22:03:21 2008 +0200) 1 commit - + gitweb: standarize HTTP status codes +* nd/dashless (Wed Nov 28 23:21:57 2007 +0700) 1 commit + + Move all dashed-form commands to libexecdir -* mv/merge-in-c (Fri Jun 20 01:22:36 2008 +0200) 11 commits - - Add new test to ensure git-merge handles more than 25 refs. +Scheduled for 1.6.0. + +* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit + + merge: remove deprecated summary and diffstat options and config + variables + +* sr/tests (Sun Jun 8 16:04:35 2008 +0200) 3 commits + + Hook up the result aggregation in the test makefile. + + A simple script to parse the results from the testcases + + Modify test-lib.sh to output stats to t/test-results/* + +* jh/clone-packed-refs (Sun Jun 15 16:06:16 2008 +0200) 4 commits + + Teach "git clone" to pack refs + + Prepare testsuite for a "git clone" that packs refs + + Move pack_refs() and friends into libgit + + Incorporate fetched packs in future object traversal + +This is useful when cloning from a repository with insanely large number +of refs. + +* lw/perlish (Thu Jun 19 22:32:49 2008 +0200) 2 commits + + Git.pm: add test suite + + t/test-lib.sh: add test_external and test_external_without_stderr + +Beginning of regression tests for Perl part of the system. + +---------------------------------------------------------------- +[Actively Cooking] + +* mv/merge-in-c (Sat Jun 21 19:15:35 2008 +0200) 14 commits + - Add new test case to ensure git-merge reduces octopus parents when + possible + - Add new test case to ensure git-merge filters for independent + parents - Build in merge - - Introduce filter_independent() in commit.c + - Introduce reduce_heads() + - Introduce get_merge_bases_many() + - Add new test to ensure git-merge handles more than 25 refs. - Introduce get_octopus_merge_bases() in commit.c - git-fmt-merge-msg: make it usable from other builtins - Move read_cache_unmerged() to read-cache.c @@ -120,21 +104,6 @@ No explanation is necessary ;-). - Move commit_list_count() to commit.c - Move split_cmdline() to alias.c -* jc/maint-combine-diff-pre-context (Wed Jun 18 23:59:41 2008 -0700) 1 commit - + diff -c/--cc: do not include uninteresting deletion before leading - context - -* lt/maint-gitdir-relative (Thu Jun 19 12:34:06 2008 -0700) 1 commit - + Make git_dir a path relative to work_tree in setup_work_tree() - ----------------------------------------------------------------- -[Actively Cooking] - -* nd/dashless (Wed Nov 28 23:21:57 2007 +0700) 1 commit - + Move all dashed-form commands to libexecdir - -Scheduled for 1.6.0. - * jc/dashless (Sat Dec 1 22:09:22 2007 -0800) 2 commits - Prepare execv_git_cmd() for removal of builtins from the filesystem @@ -143,23 +112,36 @@ Scheduled for 1.6.0. We do not plan to remove git-foo form completely from the filesystem at this point, but git-shell may need to be updated. -* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit - + merge: remove deprecated summary and diffstat options and config - variables - * dr/ceiling (Mon May 19 23:49:34 2008 -0700) 4 commits + Eliminate an unnecessary chdir("..") + Add support for GIT_CEILING_DIRECTORIES + Fold test-absolute-path into test-path-utils + Implement normalize_absolute_path -* jn/web (Tue Jun 10 19:21:44 2008 +0200) 2 commits - + gitweb: Separate generating 'sort by' table header - + gitweb: Separate filling list of projects info +---------------------------------------------------------------- +[Graduated to "master"] * rs/archive-ignore (Sun Jun 8 18:42:33 2008 +0200) 1 commit + Teach new attribute 'export-ignore' to git-archive +* lt/racy-empty (Tue Jun 10 10:44:43 2008 -0700) 1 commit + + racy-git: an empty blob has a fixed object name + +* sn/static (Thu Jun 19 08:21:11 2008 +0900) 2 commits + + config.c: make git_env_bool() static + + environment.c: remove unused function + +* jc/maint-combine-diff-pre-context (Wed Jun 18 23:59:41 2008 -0700) 1 commit + + diff -c/--cc: do not include uninteresting deletion before leading + context + +* lt/maint-gitdir-relative (Thu Jun 19 12:34:06 2008 -0700) 1 commit + + Make git_dir a path relative to work_tree in setup_work_tree() + +* jn/web (Tue Jun 10 19:21:44 2008 +0200) 2 commits + + gitweb: Separate generating 'sort by' table header + + gitweb: Separate filling list of projects info + * rg/gitweb (Fri Jun 6 09:53:32 2008 +0200) 1 commit + gitweb: remove git_blame and rename git_blame2 to git_blame @@ -173,33 +155,6 @@ this point, but git-shell may need to be updated. + Add an optional argument to commit/status -u|--untracked- files option -* sr/tests (Sun Jun 8 16:04:35 2008 +0200) 3 commits - + Hook up the result aggregation in the test makefile. - + A simple script to parse the results from the testcases - + Modify test-lib.sh to output stats to t/test-results/* - -* jh/clone-packed-refs (Sun Jun 15 16:06:16 2008 +0200) 4 commits - + Teach "git clone" to pack refs - + Prepare testsuite for a "git clone" that packs refs - + Move pack_refs() and friends into libgit - + Incorporate fetched packs in future object traversal - -This is useful when cloning from a repository with insanely large number -of refs. - -* jc/reflog-expire (Sun Jun 15 23:48:46 2008 -0700) 1 commit - - Per-ref reflog expiry configuration - -Perhaps a good foundation for optionally unexpirable stash. As 1.6.0 will -be a good time to make backward incompatible changes, we might make expiry -period of stash 'never' in new repositories. Needs a concensus. - -* lw/perlish (Thu Jun 19 22:32:49 2008 +0200) 2 commits - + Git.pm: add test suite - + t/test-lib.sh: add test_external and test_external_without_stderr - -Beginning of regression tests for Perl part of the system. - * jk/test (Sat Jun 14 03:28:07 2008 -0400) 5 commits + enable whitespace checking of test scripts + avoid trailing whitespace in zero-change diffstat lines @@ -213,13 +168,90 @@ Tightens whitespace rules for t/*.sh scripts. + builtin-fast-export: Add importing and exporting of revision marks ---------------------------------------------------------------- -[Graduated to "master"] +[On Hold] + +* ph/mergetool (Mon Jun 16 17:33:41 2008 -0600) 1 commit + + Remove the use of '--' in merge program invocation + +Waiting for success reports from people who use various backends. + +* j6t/mingw (Sat Nov 17 20:48:14 2007 +0100) 38 commits + - compat/pread.c: Add a forward declaration to fix a warning + - Windows: Fix ntohl() related warnings about printf formatting + - Windows: TMP and TEMP environment variables specify a temporary + directory. + - Windows: Make 'git help -a' work. + - Windows: Work around an oddity when a pipe with no reader is + written to. + - Windows: Make the pager work. + - When installing, be prepared that template_dir may be relative. + - Windows: Use a relative default template_dir and ETC_GITCONFIG + - Windows: Compute the fallback for exec_path from the program + invocation. + - Turn builtin_exec_path into a function. + - Windows: Use a customized struct stat that also has the st_blocks + member. + - Windows: Add a custom implementation for utime(). + - Windows: Add a new lstat and fstat implementation based on Win32 + API. + - Windows: Implement a custom spawnve(). + - Windows: Implement wrappers for gethostbyname(), socket(), and + connect(). + - Windows: Work around incompatible sort and find. + - Windows: Implement asynchronous functions as threads. + - Windows: Disambiguate DOS style paths from SSH URLs. + - Windows: A rudimentary poll() emulation. + - Windows: Change the name of hook scripts to make them not + executable. + - Windows: Implement start_command(). + - Windows: A pipe() replacement whose ends are not inherited to + children. + - Windows: Wrap execve so that shell scripts can be invoked. + - Windows: Implement setitimer() and sigaction(). + - Windows: Fix PRIuMAX definition. + - Windows: Implement gettimeofday(). + - Windows: Handle absolute paths in + safe_create_leading_directories(). + - Windows: Treat Windows style path names. + - setup.c: Prepare for Windows directory separators. + - Windows: Work around misbehaved rename(). + - Windows: always chmod(, 0666) before unlink(). + - Windows: A minimal implemention of getpwuid(). + - Windows: Implement a wrapper of the open() function. + - Windows: Strip ".exe" from the program name. + - Windows: Use the Windows style PATH separator ';'. + - Add target architecture MinGW. + - Compile some programs only conditionally. + - Add compat/regex.[ch] and compat/fnmatch.[ch]. + +No explanation is necessary ;-). The series is probably 'next' worthy +as-is. + +* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit + - diff: enable "too large a rename" warning when -M/-C is explicitly + asked for -Nothing today but expect many small ones to come out of 'next' this -weekend. +This would be the right thing to do for command line use, but gitk will be +hit due to tcl/tk's limitation, so I am holding this back for now. ---------------------------------------------------------------- -[On Hold] +[Stalled/Needs more work] + +* jc/reflog-expire (Sun Jun 15 23:48:46 2008 -0700) 1 commit + - Per-ref reflog expiry configuration + +Perhaps a good foundation for optionally unexpirable stash. As 1.6.0 will +be a good time to make backward incompatible changes, we might make expiry +period of stash 'never' in new repositories. Needs a concensus. + +* jc/merge-theirs (Fri Jun 20 00:17:59 2008 -0700) 2 commits + - git-merge-recursive-{ours,theirs} + - git-merge-file --ours, --theirs + +Punting a merge by discarding your own work in conflicting parts but still +salvaging the parts that are cleanly automerged. It is likely that this +will result in nonsense mishmash, but somehow often people want this, so +here they are. The interface to the backends may need to change, though. * jc/blame (Wed Jun 4 22:58:40 2008 -0700) 7 commits - blame: show "previous" information in --porcelain/--incremental @@ -240,67 +272,58 @@ The tip two commits are for peeling to see what's behind the blamed commit, which we should be able to separate out into an independent topic from the rest. -* jc/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit - - "git push": tellme-more protocol extension - -Kicked back to 'pu' for now. - -* js/rebase-i-sequencer (Sun Apr 27 02:55:50 2008 -0400) 17 commits - - Use perl instead of tac - - Fix t3404 assumption that `wc -l` does not use whitespace. - - rebase -i: Use : in expr command instead of match. - - rebase -i: update the implementation of 'mark' command - - Add option --preserve-tags - - Teach rebase interactive the tag command - - Add option --first-parent - - Do rebase with preserve merges with advanced TODO list - - Select all lines with fake-editor - - Unify the length of $SHORT* and the commits in the TODO list - - Teach rebase interactive the merge command - - Move redo merge code in a function - - Teach rebase interactive the reset command - - Teach rebase interactive the mark command - - Move cleanup code into it's own function - - Don't append default merge message to -m message - - fake-editor: output TODO list if unchanged - -It is very likely that this whole thing will be reverted from 'next' and -be replaced with the new sequenser series during 1.6.0 cycle. +---------------------------------------------------------------- +[Dropped for now] * sj/merge (Sat May 3 16:55:47 2008 -0700) 6 commits - - Introduce fast forward option only - - Head reduction before selecting merge strategy - - Restructure git-merge.sh - - Introduce -ff= - - New merge tests - - Documentation for joining more than two histories + . Introduce fast forward option only + . Head reduction before selecting merge strategy + . Restructure git-merge.sh + . Introduce -ff= + . New merge tests + . Documentation for joining more than two histories This will interfere with Miklos's rewrite of merge to C. -* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit - - diff: enable "too large a rename" warning when -M/-C is explicitly - asked for - -This would be the right thing to do for command line use, but gitk will be -hit due to tcl/tk's limitation, so I am holding this back for now. +* js/rebase-i-sequencer (Sun Apr 27 02:55:50 2008 -0400) 17 commits + . Use perl instead of tac + . Fix t3404 assumption that `wc -l` does not use whitespace. + . rebase -i: Use : in expr command instead of match. + . rebase -i: update the implementation of 'mark' command + . Add option --preserve-tags + . Teach rebase interactive the tag command + . Add option --first-parent + . Do rebase with preserve merges with advanced TODO list + . Select all lines with fake-editor + . Unify the length of $SHORT* and the commits in the TODO list + . Teach rebase interactive the merge command + . Move redo merge code in a function + . Teach rebase interactive the reset command + . Teach rebase interactive the mark command + . Move cleanup code into it's own function + . Don't append default merge message to -m message + . fake-editor: output TODO list if unchanged * jc/cherry-pick (Wed Feb 20 23:17:06 2008 -0800) 3 commits - - WIP: rethink replay merge - - Start using replay-tree merge in cherry-pick - - revert/cherry-pick: start refactoring call to merge_recursive + . WIP: rethink replay merge + . Start using replay-tree merge in cherry-pick + . revert/cherry-pick: start refactoring call to merge_recursive This is meant to improve cherry-pick's behaviour when renames are involved, by not using merge-recursive (whose d/f conflict resolution is quite broken), but unfortunately has stalled for some time now. * jc/stripspace (Sun Mar 9 00:30:35 2008 -0800) 6 commits - - git-am --forge: add Signed-off-by: line for the author - - git-am: clean-up Signed-off-by: lines - - stripspace: add --log-clean option to clean up signed-off-by: + . git-am --forge: add Signed-off-by: line for the author + . git-am: clean-up Signed-off-by: lines + . stripspace: add --log-clean option to clean up signed-off-by: lines - - stripspace: use parse_options() - - Add "git am -s" test - - git-am: refactor code to add signed-off-by line for the committer + . stripspace: use parse_options() + . Add "git am -s" test + . git-am: refactor code to add signed-off-by line for the committer Just my toy at this moment. +* jc/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit + . "git push": tellme-more protocol extension + From dc7a9d1556b51486be98a1c683be2d688ea29f72 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 Jul 2008 22:58:59 -0700 Subject: [PATCH 0322/2612] What's cooking in git.git (Jun 2008, issue #03; Wed, 25) --- whatscooking.txt | 116 +++++++++++++++++------------------------------ 1 file changed, 41 insertions(+), 75 deletions(-) diff --git a/whatscooking.txt b/whatscooking.txt index 2054edb7801ed8..ed5a24e1c63e73 100644 --- a/whatscooking.txt +++ b/whatscooking.txt @@ -1,4 +1,4 @@ -What's cooking in git.git (Jun 2008, issue #02; Mon, 23) +What's cooking in git.git (Jun 2008, issue #03; Wed, 25) -------------------------------------------------------- Here are the topics that have been cooking. Commits prefixed @@ -19,26 +19,21 @@ good set of feature enhancements. But bigger changes will be: * git-merge will be rewritten in C. -Currently tip of 'pu' is broken and does not pass tests, as j6t/mingw has -interaction with dr/ceiling and jc/merge-theirs has interaction with -mv/merge-in-c. + * default pack and idx versions will be updated as scheduled for some + time ago. ---------------------------------------------------------------- [New Topics] -* jc/rerere (Sun Jun 22 02:04:31 2008 -0700) 5 commits - - rerere.autoupdate - - t4200: fix rerere test - - rerere: remove dubious "tail_optimization" - - git-rerere: detect unparsable conflicts - - rerere: rerere_created_at() and has_resolution() abstraction - -* sb/rebase (Sun Jun 22 01:55:50 2008 +0200) 2 commits - + t3404: stricter tests for git-rebase--interactive - + api-builtin.txt: update and fix typo - -* sb/maint-rebase (Sun Jun 22 16:07:02 2008 +0200) 1 commit - + git-rebase.sh: Add check if rebase is in progress +* ph/parseopt-step-blame (Tue Jun 24 11:12:12 2008 +0200) 7 commits + - Migrate git-blame to parse-option partially. + - parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option. + - parse-opt: fake short strings for callers to believe in. + - parse-opt: do not pring errors on unknown options, return -2 + intead. + - parse-opt: create parse_options_step. + - parse-opt: Export a non NORETURN usage dumper. + - parse-opt: have parse_options_{start,end}. ---------------------------------------------------------------- [Will merge to master soon] @@ -53,10 +48,12 @@ mv/merge-in-c. + Split up default "user" config parsing into helper routine + Split up default "core" config parsing into helper routine -* nd/dashless (Wed Nov 28 23:21:57 2007 +0700) 1 commit +* nd/dashless (Tue Jun 24 19:58:11 2008 -0700) 2 commits + + Keep some git-* programs in $(bindir) + Move all dashed-form commands to libexecdir -Scheduled for 1.6.0. +Scheduled for 1.6.0. We'll leave server-side programs in $(bindir) +so that ssh clients can ask for "git-program" and find them on the $PATH. * sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit + merge: remove deprecated summary and diffstat options and config @@ -85,11 +82,9 @@ Beginning of regression tests for Perl part of the system. ---------------------------------------------------------------- [Actively Cooking] -* mv/merge-in-c (Sat Jun 21 19:15:35 2008 +0200) 14 commits +* mv/merge-in-c (Sat Jun 21 19:15:35 2008 +0200) 12 commits - Add new test case to ensure git-merge reduces octopus parents when possible - - Add new test case to ensure git-merge filters for independent - parents - Build in merge - Introduce reduce_heads() - Introduce get_merge_bases_many() @@ -97,17 +92,18 @@ Beginning of regression tests for Perl part of the system. - Introduce get_octopus_merge_bases() in commit.c - git-fmt-merge-msg: make it usable from other builtins - Move read_cache_unmerged() to read-cache.c - - parseopt: add a new PARSE_OPT_ARGV0_IS_AN_OPTION option - Add new test to ensure git-merge handles pull.twohead and pull.octopus - Move parse-options's skip_prefix() to git-compat-util.h - Move commit_list_count() to commit.c - Move split_cmdline() to alias.c +I dropped the change to parseopt in this series and fixed up the caller. + * jc/dashless (Sat Dec 1 22:09:22 2007 -0800) 2 commits - - Prepare execv_git_cmd() for removal of builtins from the + + Prepare execv_git_cmd() for removal of builtins from the filesystem - - git-shell: accept "git foo" form + + git-shell: accept "git foo" form We do not plan to remove git-foo form completely from the filesystem at this point, but git-shell may need to be updated. @@ -118,54 +114,23 @@ this point, but git-shell may need to be updated. + Fold test-absolute-path into test-path-utils + Implement normalize_absolute_path ----------------------------------------------------------------- -[Graduated to "master"] - -* rs/archive-ignore (Sun Jun 8 18:42:33 2008 +0200) 1 commit - + Teach new attribute 'export-ignore' to git-archive - -* lt/racy-empty (Tue Jun 10 10:44:43 2008 -0700) 1 commit - + racy-git: an empty blob has a fixed object name - -* sn/static (Thu Jun 19 08:21:11 2008 +0900) 2 commits - + config.c: make git_env_bool() static - + environment.c: remove unused function - -* jc/maint-combine-diff-pre-context (Wed Jun 18 23:59:41 2008 -0700) 1 commit - + diff -c/--cc: do not include uninteresting deletion before leading - context - -* lt/maint-gitdir-relative (Thu Jun 19 12:34:06 2008 -0700) 1 commit - + Make git_dir a path relative to work_tree in setup_work_tree() - -* jn/web (Tue Jun 10 19:21:44 2008 +0200) 2 commits - + gitweb: Separate generating 'sort by' table header - + gitweb: Separate filling list of projects info - -* rg/gitweb (Fri Jun 6 09:53:32 2008 +0200) 1 commit - + gitweb: remove git_blame and rename git_blame2 to git_blame - -* kh/update-ref (Tue Jun 3 01:34:53 2008 +0200) 2 commits - + Make old sha1 optional with git update-ref -d - + Clean up builtin-update-ref's option parsing +* jc/rerere (Sun Jun 22 02:04:31 2008 -0700) 5 commits + - rerere.autoupdate + - t4200: fix rerere test + - rerere: remove dubious "tail_optimization" + - git-rerere: detect unparsable conflicts + - rerere: rerere_created_at() and has_resolution() abstraction -* mo/status-untracked (Thu Jun 5 14:47:50 2008 +0200) 3 commits - + Add configuration option for default untracked files mode - + Add argument 'no' commit/status option -u|--untracked-files - + Add an optional argument to commit/status -u|--untracked- - files option +* sb/rebase (Sun Jun 22 01:55:50 2008 +0200) 2 commits + + t3404: stricter tests for git-rebase--interactive + + api-builtin.txt: update and fix typo -* jk/test (Sat Jun 14 03:28:07 2008 -0400) 5 commits - + enable whitespace checking of test scripts - + avoid trailing whitespace in zero-change diffstat lines - + avoid whitespace on empty line in automatic usage message - + mask necessary whitespace policy violations in test scripts - + fix whitespace violations in test scripts +* sb/maint-rebase (Sun Jun 22 16:07:02 2008 +0200) 1 commit + + git-rebase.sh: Add check if rebase is in progress -Tightens whitespace rules for t/*.sh scripts. +---------------------------------------------------------------- +[Graduated to "master"] -* pb/fast-export (Wed Jun 11 13:17:04 2008 +0200) 1 commit - + builtin-fast-export: Add importing and exporting of revision marks ---------------------------------------------------------------- [On Hold] @@ -175,7 +140,7 @@ Tightens whitespace rules for t/*.sh scripts. Waiting for success reports from people who use various backends. -* j6t/mingw (Sat Nov 17 20:48:14 2007 +0100) 38 commits +* j6t/mingw (Sat Nov 17 20:48:14 2007 +0100) 39 commits - compat/pread.c: Add a forward declaration to fix a warning - Windows: Fix ntohl() related warnings about printf formatting - Windows: TMP and TEMP environment variables specify a temporary @@ -210,22 +175,23 @@ Waiting for success reports from people who use various backends. - Windows: Implement setitimer() and sigaction(). - Windows: Fix PRIuMAX definition. - Windows: Implement gettimeofday(). - - Windows: Handle absolute paths in - safe_create_leading_directories(). - - Windows: Treat Windows style path names. - - setup.c: Prepare for Windows directory separators. + - Make my_mktime() public and rename it to tm_to_time_t() - Windows: Work around misbehaved rename(). - Windows: always chmod(, 0666) before unlink(). - Windows: A minimal implemention of getpwuid(). - Windows: Implement a wrapper of the open() function. - Windows: Strip ".exe" from the program name. + - Windows: Handle absolute paths in + safe_create_leading_directories(). + - Windows: Treat Windows style path names. + - setup.c: Prepare for Windows directory separators. - Windows: Use the Windows style PATH separator ';'. - Add target architecture MinGW. - Compile some programs only conditionally. - Add compat/regex.[ch] and compat/fnmatch.[ch]. No explanation is necessary ;-). The series is probably 'next' worthy -as-is. +as-is, except that template renaming hack won't be needed anymore. * jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit - diff: enable "too large a rename" warning when -M/-C is explicitly From 7f1455dab7aa3447eaa7b569356c3541dc0932c5 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 Jul 2008 22:58:59 -0700 Subject: [PATCH 0323/2612] What's cooking in git.git (Jun 2008, issue #04; Mon, 30) --- whatscooking.txt | 320 +++++++++++++++++++++++++++-------------------- 1 file changed, 182 insertions(+), 138 deletions(-) diff --git a/whatscooking.txt b/whatscooking.txt index ed5a24e1c63e73..a8179ed5e9ca7d 100644 --- a/whatscooking.txt +++ b/whatscooking.txt @@ -1,91 +1,207 @@ -What's cooking in git.git (Jun 2008, issue #03; Wed, 25) +What's cooking in git.git (Jun 2008, issue #04; Mon, 30) -------------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with '-' are only in 'pu' while commits prefixed with '+' are in 'next'. -The topics list the commits in reverse chronological order. +The topics list the commits in reverse chronological order. The topics +meant to be applied to the maintenance series have "maint-" in their +names. It already is beginning to become clear what 1.6.0 will look like. What's already in 'next' all are well intentioned (I do not guarantee they are already bug-free --- that is what cooking them in 'next' is for) and are -good set of feature enhancements. But bigger changes will be: +good set of feature enhancements. Bigger changes will be: * MinGW will be in. - * /usr/bin/git-cat-file is no more. The bulk of the git commands will - move to /usr/libexec/git-core/ or somesuch. + * With the default Makefile settings, most of the programs will be + installed outside your $PATH, except for "git", "gitk", "git-gui" and + some server side programs that need to be accessible for technical + reasons. Invoking a git subcommand as "git-xyzzy" from the command + line has been deprecated since early 2006 (and officially announced in + 1.5.4 release notes); use of them from your scripts after adding + output from "git --exec-path" to the $PATH will still be supported in + 1.6.0, but users are again strongly encouraged to adjust their + scripts to use "git xyzzy" form, as we will stop installing + "git-xyzzy" hardlinks for built-in commands in later releases. * git-merge will be rewritten in C. * default pack and idx versions will be updated as scheduled for some time ago. ----------------------------------------------------------------- -[New Topics] - -* ph/parseopt-step-blame (Tue Jun 24 11:12:12 2008 +0200) 7 commits - - Migrate git-blame to parse-option partially. - - parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option. - - parse-opt: fake short strings for callers to believe in. - - parse-opt: do not pring errors on unknown options, return -2 - intead. - - parse-opt: create parse_options_step. - - parse-opt: Export a non NORETURN usage dumper. - - parse-opt: have parse_options_{start,end}. - ---------------------------------------------------------------- [Will merge to master soon] -* lw/gitweb (Thu Jun 19 22:03:21 2008 +0200) 1 commit - + gitweb: standarize HTTP status codes - -* lt/config-fsync (Wed Jun 18 15:18:44 2008 -0700) 4 commits - + Add config option to enable 'fsync()' of object files - + Split up default "i18n" and "branch" config parsing into helper - routines - + Split up default "user" config parsing into helper routine - + Split up default "core" config parsing into helper routine - * nd/dashless (Tue Jun 24 19:58:11 2008 -0700) 2 commits + Keep some git-* programs in $(bindir) + Move all dashed-form commands to libexecdir -Scheduled for 1.6.0. We'll leave server-side programs in $(bindir) -so that ssh clients can ask for "git-program" and find them on the $PATH. +Scheduled for 1.6.0. We'll leave server-side programs in $(bindir) so +that ssh clients can ask for "git-program" and find them on the $PATH. +Next major release after 1.6.0 would most likely remove the hardlinks to +built-in commands, but not yet. * sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit + merge: remove deprecated summary and diffstat options and config variables -* sr/tests (Sun Jun 8 16:04:35 2008 +0200) 3 commits - + Hook up the result aggregation in the test makefile. - + A simple script to parse the results from the testcases - + Modify test-lib.sh to output stats to t/test-results/* +* jc/dashless (Thu Jun 26 16:43:34 2008 -0700) 4 commits + + Revert "Make clients ask for "git program" over ssh and local + transport" + + Make clients ask for "git program" over ssh and local transport + + Prepare execv_git_cmd() for removal of builtins from the + filesystem + + git-shell: accept "git foo" form -* jh/clone-packed-refs (Sun Jun 15 16:06:16 2008 +0200) 4 commits - + Teach "git clone" to pack refs - + Prepare testsuite for a "git clone" that packs refs - + Move pack_refs() and friends into libgit - + Incorporate fetched packs in future object traversal +---------------------------------------------------------------- +[Actively Cooking] -This is useful when cloning from a repository with insanely large number -of refs. +* jk/maint-fetch-ref-hier (Fri Jun 27 00:01:41 2008 -0400) 2 commits + + fetch: give a hint to the user when local refs fail to update + + fetch: report local storage errors in status table -* lw/perlish (Thu Jun 19 22:32:49 2008 +0200) 2 commits - + Git.pm: add test suite - + t/test-lib.sh: add test_external and test_external_without_stderr +When the remote used to have "foo" branch but now has "foo/bar", fetch +refuses to delete the existing remote tracking branch "foo" to create a +new remote tracking branch "foo/bar", but the error message was +confusing. -Beginning of regression tests for Perl part of the system. +* jc/maint-reset (Wed Jun 25 18:16:36 2008 -0700) 1 commit + + Allow "git-reset path" when unambiguous ----------------------------------------------------------------- -[Actively Cooking] +We used to require "git-reset -- path" even when there is no ambiguity +(i.e. path cannot be mistaken as a valid tree-ish and it is a filename in +the work tree). + +* js/maint-clone-insteadof (Fri Jun 27 13:55:23 2008 +0100) 2 commits + + clone: respect the settings in $HOME/.gitconfig and /etc/gitconfig + + clone: respect url.insteadOf setting in global configs -* mv/merge-in-c (Sat Jun 21 19:15:35 2008 +0200) 12 commits +"git clone" did not honor "url.InsteadOf" in $HOME/.gitconfig. I think +Daniel's "Let's get rid of internal use of GIT_CONFIG" makes sense (even +though it feels very scary), and it would make the solution much simpler, +but it came late and it is already past my bedtime, so... + +* tr/send-email-ssl (Thu Jun 26 23:03:21 2008 +0200) 2 commits + + git-send-email: prevent undefined variable warnings if no + encryption is set + + git-send-email: add support for TLS via Net::SMTP::SSL + +* kb/send-email-fifo (Wed Jun 25 15:44:40 2008 -0700) 1 commit + + git-send-email: Accept fifos as well as files + +Two minor send-email feature enhancements for 1.6.0. + +* jc/checkdiff (Sun Jun 29 16:49:06 2008 -0400) 7 commits + + Fix t4017-diff-retval for white-space from wc + + Update sample pre-commit hook to use "diff --check" + + diff --check: detect leftover conflict markers + + Teach "diff --check" about new blank lines at end + + checkdiff: pass diff_options to the callback + + check_and_emit_line(): rename and refactor + + diff --check: explain why we do not care whether old side is + binary + +Allows us to replace the sample pre-commit hook that was not aware of the +line termination convention per path nor newer whitespace breakage rules. + +* np/pack-default (Wed Jun 25 00:25:53 2008 -0400) 2 commits + + pack.indexversion config option now defaults to 2 + + repack.usedeltabaseoffset config option now defaults to "true" + +Updates the default value for pack.indexversion to 2 and use delta-base +offset encoding of the packfiles by default. + +* js/apply-recount (Fri Jun 27 18:43:09 2008 +0100) 1 commit + + Allow git-apply to recount the lines in a hunk (AKA recountdiff) + +A good ingredient for implementing "apply --edit". + +* dz/apply-again (Fri Jun 27 14:39:12 2008 -0400) 1 commit + + git-apply: handle a patch that touches the same path more than + once better + +Allows us to feed a patch that touches the same path more than once. + +* jc/reflog-expire (Sat Jun 28 22:24:49 2008 -0700) 2 commits + - Make default expiration period of reflog used for stash infinite + - Per-ref reflog expiry configuration + +As 1.6.0 will be a good time to make backward incompatible changes, the +tip commit makes the default expiry period of stash 'never', unless you +configure them to expire explicitly using gc.refs/stash.* variables. +Needs consensus, but I am guessing that enough people would want stash +that does not expire. + +* jc/merge-theirs (Sat Jun 28 17:28:22 2008 -0700) 3 commits + + Teach git-merge to pass -X