* GIT 0.99.9
@ 2005-10-30 1:29 Junio C Hamano
2005-10-30 3:16 ` A Large Angry SCM
` (3 more replies)
0 siblings, 4 replies; 28+ messages in thread
From: Junio C Hamano @ 2005-10-30 1:29 UTC (permalink / raw)
To: git; +Cc: linux-kernel
GIT 0.99.9 is found at usual places.
As I said in the 0.99.8 announcement, git already does
everything I want it to do, and from here on I'd like to see us
concentrate on fixes (both correctness and performance) until we
hit 1.0 which should happen shortly.
Many thanks to everybody who contributed the comments, extra set
of eyeballs, and code.
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].
^ permalink raw reply [flat|nested] 28+ messages in thread* Re: GIT 0.99.9 2005-10-30 1:29 GIT 0.99.9 Junio C Hamano @ 2005-10-30 3:16 ` A Large Angry SCM 2005-10-30 3:39 ` Junio C Hamano 2005-10-30 5:05 ` Linus Torvalds ` (2 subsequent siblings) 3 siblings, 1 reply; 28+ messages in thread From: A Large Angry SCM @ 2005-10-30 3:16 UTC (permalink / raw) To: Junio C Hamano; +Cc: git Junio C Hamano wrote: > GIT 0.99.9 is found at usual places. > > As I said in the 0.99.8 announcement, git already does > everything I want it to do, and from here on I'd like to see us > concentrate on fixes (both correctness and performance) until we > hit 1.0 which should happen shortly. > > Many thanks to everybody who contributed the comments, extra set > of eyeballs, and code. > > > Done in 0.99.9 > ============== [Lots of text deleted] It's nice to see the TODO list get shorter for a change! Especially since the removed TODO items are not on the HAVEDONE list. So, with 0.99.9 being the (non) "scary" release of Git, are you targeting the Git 1.0 to be the (non) "turkey" release or the "fruit cake" release? ;-) ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 3:16 ` A Large Angry SCM @ 2005-10-30 3:39 ` Junio C Hamano 2005-10-30 4:03 ` A Large Angry SCM 0 siblings, 1 reply; 28+ messages in thread From: Junio C Hamano @ 2005-10-30 3:39 UTC (permalink / raw) To: gitzilla; +Cc: git A Large Angry SCM <gitzilla@gmail.com> writes: > It's nice to see the TODO list get shorter for a change! Especially > since the removed TODO items are not on the HAVEDONE list. Huh? What are you talking about? Most of the items that were on the TODO list and marked [DONE] are on the HAVEDONE list, although I rephrased many of them to be more appropriate for the release notes. The only thing that I did not list on HAVEDONE list was 'whatchanged -m' documentation. There are many documentation contributions from the list I do not mention in HAVEDONE. I dropped from the TODO list was the "Perhaps show ^{commit}, ^{tree} instead of ^{} from ls-remote", whose benefit was dubious. ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 3:39 ` Junio C Hamano @ 2005-10-30 4:03 ` A Large Angry SCM 2005-10-30 13:21 ` Johannes Schindelin 0 siblings, 1 reply; 28+ messages in thread From: A Large Angry SCM @ 2005-10-30 4:03 UTC (permalink / raw) To: Junio C Hamano; +Cc: git Junio C Hamano wrote: > A Large Angry SCM <gitzilla@gmail.com> writes: > >>It's nice to see the TODO list get shorter for a change! Especially >>since the removed TODO items are not on the HAVEDONE list. ^^^ Oops! The ``not'' wasn't supposed to be there!!!! > > Huh? What are you talking about? My typing was in error. The ``not'' should not have been there. > Most of the items that were on the TODO list and marked [DONE] > are on the HAVEDONE list, although I rephrased many of them to > be more appropriate for the release notes. The only thing that > I did not list on HAVEDONE list was 'whatchanged -m' > documentation. There are many documentation contributions from > the list I do not mention in HAVEDONE. > > I dropped from the TODO list was the "Perhaps show ^{commit}, > ^{tree} instead of ^{} from ls-remote", whose benefit was > dubious. > > Junio, I think you're doing an great job with Git. Particularly, since I'm thinking that it may be mature enough to replace another SCM with a very large code base that I deal with. ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 4:03 ` A Large Angry SCM @ 2005-10-30 13:21 ` Johannes Schindelin 0 siblings, 0 replies; 28+ messages in thread From: Johannes Schindelin @ 2005-10-30 13:21 UTC (permalink / raw) To: A Large Angry SCM; +Cc: Junio C Hamano, git Hi, On Sat, 29 Oct 2005, A Large Angry SCM wrote: > Junio, I think you're doing an great job with Git. Concur! > Particularly, since I'm thinking that it may be mature enough to replace > another SCM with a very large code base that I deal with. Add to that the fact that most, if not all, changes are made backwards compatible, i.e. git has stable for a *long* time now. Ciao, Dscho ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 1:29 GIT 0.99.9 Junio C Hamano 2005-10-30 3:16 ` A Large Angry SCM @ 2005-10-30 5:05 ` Linus Torvalds 2005-10-30 8:37 ` rev-list --sparse? Junio C Hamano 2005-10-30 17:20 ` GIT 0.99.9 Wolfgang Denk 2005-10-31 2:52 ` Linus Torvalds 3 siblings, 1 reply; 28+ messages in thread From: Linus Torvalds @ 2005-10-30 5:05 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List On Sat, 29 Oct 2005, Junio C Hamano wrote: > > GIT 0.99.9 is found at usual places. Congrats. I personally think this is very much worthy of a 1.0 after just giving it some time to shake out any possible last-minute bugs. Linus ^ permalink raw reply [flat|nested] 28+ messages in thread
* rev-list --sparse? 2005-10-30 5:05 ` Linus Torvalds @ 2005-10-30 8:37 ` Junio C Hamano 2005-10-30 21:42 ` Linus Torvalds 0 siblings, 1 reply; 28+ messages in thread From: Junio C Hamano @ 2005-10-30 8:37 UTC (permalink / raw) To: Linus Torvalds; +Cc: Git Mailing List I was reviewing the rev-list documentation and it struck me that dense/sparse command line flag do not make much sense. Since dense is by default in effect, --dense is a no-op. One possible use of it would be to hardcode --dense on a rev-list command line in a script, like: git-rev-list $some_opts --dense $some_paths to defeat user-supplied --sparse that can be in $some_opts, but for this to work the script needs to have parsed out user input into some_opts and some_paths in the first place anyway, so it can just detect and remove --sparse just as easily. The --sparse flag does not seem to have much use either; not giving pathspec has the same effect. ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: rev-list --sparse? 2005-10-30 8:37 ` rev-list --sparse? Junio C Hamano @ 2005-10-30 21:42 ` Linus Torvalds 2005-10-30 23:31 ` Junio C Hamano 0 siblings, 1 reply; 28+ messages in thread From: Linus Torvalds @ 2005-10-30 21:42 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List On Sun, 30 Oct 2005, Junio C Hamano wrote: > > The --sparse flag does not seem to have much use either; not > giving pathspec has the same effect. No. --sparse _does_ have effect, but it's subtler. Try "--sparse" together with a pathspec. It will only do the merge follow optimization. Now, how useful is that? It's potentially useful as a way to "linearize the history". For example, let's say that you wanted to simplify the commit history for a project, and you only cared about the history of certain files - but you do want all the other files to _exist_ in that history. So then you could do "git-rev-list --sparse HEAD -- filelist" and you'd get the minimal history that is still relevant in those files. Any merges that touch anything else than those files will becomes just regular diffs: they'll have been linearized away. Useful? Quite possibly not. But I felt that simplifying merges was conceptually a very different operation from then compressing a linear history. Linus ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: rev-list --sparse? 2005-10-30 21:42 ` Linus Torvalds @ 2005-10-30 23:31 ` Junio C Hamano 0 siblings, 0 replies; 28+ messages in thread From: Junio C Hamano @ 2005-10-30 23:31 UTC (permalink / raw) To: Linus Torvalds; +Cc: git Linus Torvalds <torvalds@osdl.org> writes: > Try "--sparse" together with a pathspec. It will only do the merge > follow optimization. Ah, I saw (paths && dense) everywhere but there indeed is one that only checks paths to call merge simplification -- I missed that part. ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 1:29 GIT 0.99.9 Junio C Hamano 2005-10-30 3:16 ` A Large Angry SCM 2005-10-30 5:05 ` Linus Torvalds @ 2005-10-30 17:20 ` Wolfgang Denk 2005-10-30 17:31 ` Junio C Hamano 2005-10-31 2:52 ` Linus Torvalds 3 siblings, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2005-10-30 17:20 UTC (permalink / raw) To: Junio C Hamano; +Cc: git In message <7vd5lnztav.fsf@assigned-by-dhcp.cox.net> you wrote: > GIT 0.99.9 is found at usual places. "make rpm" does not work for me: ... make -C templates install make[2]: Entering directory `/usr/local/BUILD/git-core-0.99.9/templates' : no custom templates yet find blt blt blt/branches blt/hooks blt/hooks/post-commit blt/hooks/applypatch-msg blt/hooks/commit-msg blt/hooks/post-update blt/hooks/update blt/hooks/pre-applypatch blt/hooks/pre-commit blt/info blt/info/exclude blt/description blt/remotes install -d -m755 '/var/tmp/git-core-0.99.9-1-root-wd/usr/share/git-core/templates/' (cd blt && tar cf - .) | \ (cd '/var/tmp/git-core-0.99.9-1-root-wd/usr/share/git-core/templates/' && tar xf -) tar: This does not look like a tar archive tar: Skipping to next header tar: Error exit delayed from previous errors make[2]: *** [install] Error 2 make[2]: Leaving directory `/usr/local/BUILD/git-core-0.99.9/templates' make[1]: *** [install] Error 2 make[1]: Leaving directory `/usr/local/BUILD/git-core-0.99.9' error: Bad exit status from /var/tmp/rpm-tmp.96513 (%install) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.96513 (%install) make: *** [rpm] Error 1 Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de "The computer programmer is a creator of universes for which he alone is responsible. Universes of virtually unlimited complexity can be created in the form of computer programs." - Joseph Weizenbaum, _Computer Power and Human Reason_ ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 17:20 ` GIT 0.99.9 Wolfgang Denk @ 2005-10-30 17:31 ` Junio C Hamano 2005-10-30 20:23 ` Wolfgang Denk 2005-10-30 20:38 ` Wolfgang Denk 0 siblings, 2 replies; 28+ messages in thread From: Junio C Hamano @ 2005-10-30 17:31 UTC (permalink / raw) To: Wolfgang Denk; +Cc: git Wolfgang Denk <wd@denx.de> writes: > In message <7vd5lnztav.fsf@assigned-by-dhcp.cox.net> you wrote: >> GIT 0.99.9 is found at usual places. > > "make rpm" does not work for me: I hate it when somebody tells me "it works for me", but I cannot help you here, sorry. I'm no rpm expert and the "make rpm" rule seems to work for me. ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 17:31 ` Junio C Hamano @ 2005-10-30 20:23 ` Wolfgang Denk 2005-10-30 20:46 ` Junio C Hamano 2005-10-31 3:21 ` Horst von Brand 2005-10-30 20:38 ` Wolfgang Denk 1 sibling, 2 replies; 28+ messages in thread From: Wolfgang Denk @ 2005-10-30 20:23 UTC (permalink / raw) To: Junio C Hamano; +Cc: git In message <7vvezesyhi.fsf@assigned-by-dhcp.cox.net> you wrote: > > I hate it when somebody tells me "it works for me", but I cannot > help you here, sorry. I'm no rpm expert and the "make rpm" rule > seems to work for me. Which environment (Linux distribution) did you test this on? I tried Fedora Core 2 and 4, both with the same result. I get the same problem when building from the git source tree or when using the source RPM. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de A person with one watch knows what time it is; a person with two watches is never sure. Proverb ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 20:23 ` Wolfgang Denk @ 2005-10-30 20:46 ` Junio C Hamano 2005-10-31 3:21 ` Horst von Brand 1 sibling, 0 replies; 28+ messages in thread From: Junio C Hamano @ 2005-10-30 20:46 UTC (permalink / raw) To: Wolfgang Denk; +Cc: git Wolfgang Denk <wd@denx.de> writes: > In message <7vvezesyhi.fsf@assigned-by-dhcp.cox.net> you wrote: >> >> I hate it when somebody tells me "it works for me", but I cannot >> help you here, sorry. I'm no rpm expert and the "make rpm" rule >> seems to work for me. > > Which environment (Linux distribution) did you test this on? I tried > Fedora Core 2 and 4, both with the same result. I get the same > problem when building from the git source tree or when using the > source RPM. Whatever is running on kernel.org. I think I was once told they run RH-EL but I do not have that e-mail now. ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 20:23 ` Wolfgang Denk 2005-10-30 20:46 ` Junio C Hamano @ 2005-10-31 3:21 ` Horst von Brand 1 sibling, 0 replies; 28+ messages in thread From: Horst von Brand @ 2005-10-31 3:21 UTC (permalink / raw) To: Wolfgang Denk; +Cc: Junio C Hamano, git Wolfgang Denk <wd@denx.de> wrote: > In message <7vvezesyhi.fsf@assigned-by-dhcp.cox.net> you wrote: > > I hate it when somebody tells me "it works for me", but I cannot > > help you here, sorry. I'm no rpm expert and the "make rpm" rule > > seems to work for me. > Which environment (Linux distribution) did you test this on? I tried > Fedora Core 2 and 4, both with the same result. I get the same > problem when building from the git source tree or when using the > source RPM. In Fedora rawhide it works (I've got asciidoc installed, and git locally in my account). -- Dr. Horst H. von Brand User #22616 counter.li.org Departamento de Informatica Fono: +56 32 654431 Universidad Tecnica Federico Santa Maria +56 32 654239 Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513 ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 17:31 ` Junio C Hamano 2005-10-30 20:23 ` Wolfgang Denk @ 2005-10-30 20:38 ` Wolfgang Denk 2005-10-30 22:31 ` Ryan Anderson 2005-10-30 22:54 ` Junio C Hamano 1 sibling, 2 replies; 28+ messages in thread From: Wolfgang Denk @ 2005-10-30 20:38 UTC (permalink / raw) To: Junio C Hamano; +Cc: git In message <7vvezesyhi.fsf@assigned-by-dhcp.cox.net> you wrote: > > > "make rpm" does not work for me: > > I hate it when somebody tells me "it works for me", but I cannot > help you here, sorry. I'm no rpm expert and the "make rpm" rule > seems to work for me. OK, I found the problem. The key part is this: [current directory: .../usr/share/git-core/templates/] (cd blt && tar cf - .) | \ (cd '/var/tmp/git-core-0.99.9-1-root-wd/usr/share/git-core/templates/' && tar xf -) tar: This does not look like a tar archive tar: Skipping to next header tar: Error exit delayed from previous errors I have CDPATH set in my shell environment, and bash outputs the pathname of the new working directory on stdout; this gets piped together with the tarball to the "tar xf -", and the second tar complains that the directory name comes unexpected. Test: -> cd /usr/local/BUILD/git-core-0.99.9/templates -> cd blt /usr/local/BUILD/git-core-0.99.9/templates/blt -> As a workaround I can simply unset CDPATH, and the build works fine. A more robust build script woul make sure that CDPATH is not set. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de Testing can show the presense of bugs, but not their absence. -- Edsger Dijkstra ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 20:38 ` Wolfgang Denk @ 2005-10-30 22:31 ` Ryan Anderson 2005-10-30 22:54 ` Junio C Hamano 1 sibling, 0 replies; 28+ messages in thread From: Ryan Anderson @ 2005-10-30 22:31 UTC (permalink / raw) To: Wolfgang Denk; +Cc: Junio C Hamano, git [-- Attachment #1: Type: text/plain, Size: 241 bytes --] Wolfgang Denk wrote: > As a workaround I can simply unset CDPATH, and the build works fine. > A more robust build script woul make sure that CDPATH is not set. Try setting CDPATH, but not exporting it in your shell startup configuration. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 256 bytes --] ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 20:38 ` Wolfgang Denk 2005-10-30 22:31 ` Ryan Anderson @ 2005-10-30 22:54 ` Junio C Hamano 2005-10-30 23:03 ` H. Peter Anvin 1 sibling, 1 reply; 28+ messages in thread From: Junio C Hamano @ 2005-10-30 22:54 UTC (permalink / raw) To: Wolfgang Denk; +Cc: git Wolfgang Denk <wd@denx.de> writes: > I have CDPATH set in my shell environment,... I understand some people like CDPATH in their interactive shells, but I do not see a good reason to export that to random shell scripts you run from your interactive shell session. We already have a workaround for this exact silliness in git-sh-setup. Probably we also need to do this to our build procedure, I guess. Sigh... ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 22:54 ` Junio C Hamano @ 2005-10-30 23:03 ` H. Peter Anvin 0 siblings, 0 replies; 28+ messages in thread From: H. Peter Anvin @ 2005-10-30 23:03 UTC (permalink / raw) To: Junio C Hamano; +Cc: Wolfgang Denk, git Junio C Hamano wrote: > > I understand some people like CDPATH in their interactive > shells, but I do not see a good reason to export that to random > shell scripts you run from your interactive shell session. > No kidding. Having 'cd' output stuff to stdout is asking for a million shell scripts to be broken. -hpa ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-30 1:29 GIT 0.99.9 Junio C Hamano ` (2 preceding siblings ...) 2005-10-30 17:20 ` GIT 0.99.9 Wolfgang Denk @ 2005-10-31 2:52 ` Linus Torvalds 2005-10-31 3:08 ` Junio C Hamano ` (2 more replies) 3 siblings, 3 replies; 28+ messages in thread From: Linus Torvalds @ 2005-10-31 2:52 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List Btw, one thing I'd like to see (maybe it already exists and I just have overlooked it) is some kind of simple readme or something about the different ways to limit the output of the various git commands. I've several times been surprised to see people not realize that "git-whatchanged" takes a file list to limit the files it is interested in. I also suspect people don't realize that you can limit it by time and version and file list, all at the same time. IOW, git-whatchanged -p --pretty=short --since="2 weeks ago" v0.99.8..v0.99.9 Makefile is a valid query: it basically asks for any change to the Makefile in between versions v0.99.8..v0.99.9, _and_ within the last two weeks, and asks to show it as a patch, with the shortened commit message. Is it useful? The above exact line almost certainly isn't, but variations on the above definitely are. And I suspect a lot of people never even realized you could do something like that. (The danger with date-based things is that something may be 4 months old, but it only got _merged_ yesterday, so it may be new to _you_. And the --since="2 weeks ago" will not show it, which can be surprising to people who expect things that are new to _them_ to be shown). The above limiters now work with "git log" and "gitk" too (they've worked for a long time with "git-whatchanged", but only with the new git-rev-list functionality does the name-limiting work for the other commands). It would be good to make this more well-known, because a lot of people probably end up using git not as developers, but just to follow what is going on. And then the different limiters are some of the most important parts (the date-one is likely the least important one, but limiting by version and name is _very_ important). Linus ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-31 2:52 ` Linus Torvalds @ 2005-10-31 3:08 ` Junio C Hamano 2005-10-31 4:05 ` Linus Torvalds 2005-10-31 21:40 ` Archaeology [Was: Re: GIT 0.99.9] Horst von Brand 2005-10-31 23:47 ` Date-based limits (Was Re: GIT 0.99.9) Daniel Barkalow 2005-11-02 19:02 ` [PATCH] rev-list: make --max- and --min-age a bit more usable Junio C Hamano 2 siblings, 2 replies; 28+ messages in thread From: Junio C Hamano @ 2005-10-31 3:08 UTC (permalink / raw) To: Linus Torvalds; +Cc: Git Mailing List Linus Torvalds <torvalds@osdl.org> writes: > I've several times been surprised to see people not realize that > "git-whatchanged" takes a file list to limit the files it is interested > in. I also suspect people don't realize that you can limit it by time and > version and file list, all at the same time. > It would be good to make this more well-known, because a lot of people > probably end up using git not as developers, but just to follow what is > going on. And then the different limiters are some of the most important > parts (the date-one is likely the least important one, but limiting by > version and name is _very_ important). I've somewhat updated git-rev-list documentation and tried to categorize the options into commit selectors and presentation modifiers. The documentation for commands you mentioned in your message all talk about them describing only frequently used options, and refer the user to rev-list documentation. I am not sure this would be enough. One good thing to have would be to add a section to Tutorial. Currently we cover building a small project from scratch and have the readers graduate when they learn basic commit swapping, but we do not talk much about archaeology tools. ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: GIT 0.99.9 2005-10-31 3:08 ` Junio C Hamano @ 2005-10-31 4:05 ` Linus Torvalds 2005-10-31 21:40 ` Archaeology [Was: Re: GIT 0.99.9] Horst von Brand 1 sibling, 0 replies; 28+ messages in thread From: Linus Torvalds @ 2005-10-31 4:05 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List On Sun, 30 Oct 2005, Junio C Hamano wrote: > > I've somewhat updated git-rev-list documentation and tried to > categorize the options into commit selectors and presentation > modifiers. The documentation for commands you mentioned in your > message all talk about them describing only frequently used > options, and refer the user to rev-list documentation. I am not > sure this would be enough. I don't think people really follow the links or think very abstractly at all in the first place. So I was thinking more of some explicit examples. I actually think every command should have an example in the man-page, and hey, here's a patch to start things off. Of course, I'm not exactly "Mr Documentation", and I don't know that this is the prettiest way to do this, but I checked that the resulting html and man-page seems at least reasonable. And hey, if the examples look like each other, that's just because I'm also not "Mr Imagination". Signed-off-by: Linus Torvalds <torvalds@osdl.org> --- I think most people understand a lot better from practice than from theory, and that an example of real usage is much more likely to make people udnerstand a command than just listing what it can do. diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt index 13a3998..9cac088 100644 --- a/Documentation/git-log.txt +++ b/Documentation/git-log.txt @@ -30,6 +30,24 @@ OPTIONS Show only commits between the named two commits. +Examples +-------- +git log --no-merges:: + + Show the whole commit history, but skip any merges + +git log v2.6.12.. include/scsi drivers/scsi:: + + Show all commits since version 'v2.6.12' that changed any file + in the include/scsi or drivers/scsi subdirectories + +git log --since="2 weeks ago" -- gitk:: + + Show the changes during the last two weeks to the file 'gitk'. + The "--" is necessary to avoid confusion with the *branch* named + 'gitk' + + Author ------ Written by Linus Torvalds <torvalds@osdl.org> diff --git a/Documentation/git-whatchanged.txt b/Documentation/git-whatchanged.txt index e6f57d9..6c150b0 100644 --- a/Documentation/git-whatchanged.txt +++ b/Documentation/git-whatchanged.txt @@ -51,6 +51,20 @@ OPTIONS However, it is not very useful in general, although it *is* useful on a file-by-file basis. +Examples +-------- +git-whatchanged -p v2.6.12.. include/scsi drivers/scsi:: + + Show as patches the commits since version 'v2.6.12' that changed + any file in the include/scsi or drivers/scsi subdirectories + +git-whatchanged --since="2 weeks ago" -- gitk:: + + Show the changes during the last two weeks to the file 'gitk'. + The "--" is necessary to avoid confusion with the *branch* named + 'gitk' + + Author ------ Written by Linus Torvalds <torvalds@osdl.org> and diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt index e5ef6d6..eb126d7 100644 --- a/Documentation/gitk.txt +++ b/Documentation/gitk.txt @@ -24,6 +24,19 @@ OPTIONS Some argument not yet documented. +Examples +-------- +gitk v2.6.12.. include/scsi drivers/scsi:: + + Show as the changes since version 'v2.6.12' that changed any + file in the include/scsi or drivers/scsi subdirectories + +gitk --since="2 weeks ago" -- gitk:: + + Show the changes during the last two weeks to the file 'gitk'. + The "--" is necessary to avoid confusion with the *branch* named + 'gitk' + Author ------ Written by Paul Mackerras <paulus@samba.org> ^ permalink raw reply related [flat|nested] 28+ messages in thread
* Archaeology [Was: Re: GIT 0.99.9] 2005-10-31 3:08 ` Junio C Hamano 2005-10-31 4:05 ` Linus Torvalds @ 2005-10-31 21:40 ` Horst von Brand 1 sibling, 0 replies; 28+ messages in thread From: Horst von Brand @ 2005-10-31 21:40 UTC (permalink / raw) To: Junio C Hamano; +Cc: Linus Torvalds, Git Mailing List Junio C Hamano <junkio@cox.net> wrote: [...] > One good thing to have would be to add a section to Tutorial. > Currently we cover building a small project from scratch and > have the readers graduate when they learn basic commit swapping, > but we do not talk much about archaeology tools. One of the problems with that is to have a sufficiently rich repository at hand. People who futz around with git could be directed to get the latest git from git for a guided tour. Or create a script like the one in the cogito tutorial to build up someting interesting and then direct people to look it over. -- Dr. Horst H. von Brand User #22616 counter.li.org Departamento de Informatica Fono: +56 32 654431 Universidad Tecnica Federico Santa Maria +56 32 654239 Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513 ^ permalink raw reply [flat|nested] 28+ messages in thread
* Date-based limits (Was Re: GIT 0.99.9) 2005-10-31 2:52 ` Linus Torvalds 2005-10-31 3:08 ` Junio C Hamano @ 2005-10-31 23:47 ` Daniel Barkalow 2005-11-01 0:37 ` Date-based limits Junio C Hamano 2005-11-02 19:02 ` [PATCH] rev-list: make --max- and --min-age a bit more usable Junio C Hamano 2 siblings, 1 reply; 28+ messages in thread From: Daniel Barkalow @ 2005-10-31 23:47 UTC (permalink / raw) To: Linus Torvalds; +Cc: Junio C Hamano, Git Mailing List On Sun, 30 Oct 2005, Linus Torvalds wrote: > (The danger with date-based things is that something may be 4 months old, > but it only got _merged_ yesterday, so it may be new to _you_. And the > --since="2 weeks ago" will not show it, which can be surprising to people > who expect things that are new to _them_ to be shown). At some point, we might want to have a series of refs tracking changes to the user's heads over time. Then the right set of arguments could actually handle "what would I have seen on Thursday, when I hadn't pulled since Tuesday, and upstream got some changes on Wednesday that I got on Friday, and it's Saturday now." (That is, Wednesday's commits hadn't hit the local repository yet; the commit that we got to is dated Friday for local purposes, and the latest as of Thursday is dated Tuesday, which is the last time the ref file was modified.) And we probably don't want to fetch or clone this stuff; I doubt most people want to know the history from somebody else's point of view. At least, I can't think of a use for it that wouldn't be better served by asking whoever for the hash out of their history. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Date-based limits 2005-10-31 23:47 ` Date-based limits (Was Re: GIT 0.99.9) Daniel Barkalow @ 2005-11-01 0:37 ` Junio C Hamano 2005-11-01 0:43 ` Daniel Barkalow 0 siblings, 1 reply; 28+ messages in thread From: Junio C Hamano @ 2005-11-01 0:37 UTC (permalink / raw) To: Daniel Barkalow; +Cc: git Daniel Barkalow <barkalow@iabervon.org> writes: > At some point, we might want to have a series of refs tracking changes to > the user's heads over time. Hmph. If you really want something like that, I think you could add a hook support for git-fetch to implement this as automatically created lightweight tags, stashed in $GIT_DIR/fetch-history/, deriving their names from the time of the fetch; clone would grab everything below refs/ but this is deliberately placed outside that hierarchy and won't get copied. By definition, these point at commits reachable from some of your heads (unless the remote repository maintainer is stupid enough to rewind public trees ;-), so fsck-object would not see them but it should not be a problem. ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Date-based limits 2005-11-01 0:37 ` Date-based limits Junio C Hamano @ 2005-11-01 0:43 ` Daniel Barkalow 0 siblings, 0 replies; 28+ messages in thread From: Daniel Barkalow @ 2005-11-01 0:43 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On Mon, 31 Oct 2005, Junio C Hamano wrote: > Daniel Barkalow <barkalow@iabervon.org> writes: > > > At some point, we might want to have a series of refs tracking changes to > > the user's heads over time. > > Hmph. If you really want something like that, I think you could > add a hook support for git-fetch to implement this as > automatically created lightweight tags... Probably; I think this should also trigger on commits and such, and it would need a way for rev-list (or rev-parse?) to find the last one before a user-specified date, so that you don't have to figure out when the last change was that contributed to you seeing a particular tree on a given date. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] rev-list: make --max- and --min-age a bit more usable. 2005-10-31 2:52 ` Linus Torvalds 2005-10-31 3:08 ` Junio C Hamano 2005-10-31 23:47 ` Date-based limits (Was Re: GIT 0.99.9) Daniel Barkalow @ 2005-11-02 19:02 ` Junio C Hamano 2005-11-03 3:11 ` Linus Torvalds 2 siblings, 1 reply; 28+ messages in thread From: Junio C Hamano @ 2005-11-02 19:02 UTC (permalink / raw) To: Linus Torvalds; +Cc: git Linus Torvalds <torvalds@osdl.org> writes: > I've several times been surprised to see people not realize that > "git-whatchanged" takes a file list to limit the files it is interested > in. I also suspect people don't realize that you can limit it by time and > version and file list, all at the same time. The current "time based limiting" is not very user friendly, so people not knowing the limit-by-time is not a surprise. > git-whatchanged -p --pretty=short --since="2 weeks ago" v0.99.8..v0.99.9 Makefile > > is a valid query Well, it is not a valid query ;-) Nobody implemented --since yet, but you could spell it --max-age. It would not grok "2 weeks ago" though. With the attached patch, you could at least do: git log --max-age='2005-10-25' v0.99.8..v0.99.9 Makefile There are still a couple of things that bothers me. (1) The underlying workhorse, rev-list, takes max-age and min-age. While these names are logically correct, it feels a bit hard and counterintuitive when deciding which one to use in order to ask "what are the ones that happened after Wednesday last week?". The query talks about the commits being young, so --max-age=2005-10-26 is the right query (i.e. "I want to discard things that are older than that time"), but as soon as I type "max", my mind starts comparing date strings, and surely 2005-10-21 is smaller than 2005-10-26 and I am saying 2005-10-26 is the max, which confuses me to think that 2005-10-21 would be included in the result (it would not be -- we are talking about age, so 2005-10-21 one is older, which means its age is greater than specified). It takes some mental effort to do this, at least for me. I *hate* to suggest this change at this late stage of the game, but maybe they should be renamed or at least acquire less confusing synonyms, perhaps? --max-age = --min-timestamp, --since --min-age = --max-timestamp, --until (2) If I run the above --max-age query, the last commit displayed is this one: commit f3123c4ab3d3698262e59561ac084de45b10365a Author: Junio C Hamano <junkio@cox.net> Date: Sat Oct 22 01:28:13 2005 -0700 This is because the age limit uses commit date (which is a sensible thing to do) while the display shows author date. To an uninitiated, this takes some explanation and justification (i.e. counterintuitive again). Incidenally, I have not found a way to prettyprint the commit date; --pretty=raw gives that information, but in really raw format. --pretty=full does not even give any timestamp. Again I *hate* to suggest this, but maybe --pretty=full should show both author and commit timestamp as well, like this? commit f3123c4ab3d3698262e59561ac084de45b10365a Author: Junio C Hamano <junkio@cox.net> A-Date: Sat Oct 22 01:28:13 2005 -0700 Commit: Junio C Hamano <junkio@cox.net> C-Date: Wed Oct 26 12:37:49 2005 -0700 -- >8 -- cut here -- >8 -- Earlier we just did atoi to accept these parameters, which meant that the user needed to specify the raw UNIX time format to use them. This still does not make it accept '2 weeks ago', but at least it now can take --max-age='2005-10-15', which is a start. Signed-off-by: Junio C Hamano <junkio@cox.net> --- rev-list.c | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-) applies-to: 0c9683fe37dbc43713faaa15fcce14bfe5621bba 9dc13af3f916803d270d3387032eb0e91b940417 diff --git a/rev-list.c b/rev-list.c index 6e6ffde..7a73703 100644 --- a/rev-list.c +++ b/rev-list.c @@ -712,6 +712,21 @@ static void handle_all(struct commit_lis global_lst = NULL; } +static unsigned long getdate(const char *arg, const char *label) +{ + char text[80]; + unsigned long date; + + if (parse_date(arg, text, sizeof(text)) < 0) { + /* Maybe handle "4 days ago" and the like here... */ + die("bad time specification for %s: %s", label, arg); + } + date = strtoul(text, NULL, 10); + if (date == ULONG_MAX) + die("unparsable time specification for %s: %s", label, arg); + return date; +} + int main(int argc, const char **argv) { const char *prefix = setup_git_directory(); @@ -730,12 +745,12 @@ int main(int argc, const char **argv) continue; } if (!strncmp(arg, "--max-age=", 10)) { - max_age = atoi(arg + 10); + max_age = getdate(arg + 10, "max-age"); limited = 1; continue; } if (!strncmp(arg, "--min-age=", 10)) { - min_age = atoi(arg + 10); + min_age = getdate(arg + 10, "min-age"); limited = 1; continue; } --- 0.99.9.GIT ^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH] rev-list: make --max- and --min-age a bit more usable. 2005-11-02 19:02 ` [PATCH] rev-list: make --max- and --min-age a bit more usable Junio C Hamano @ 2005-11-03 3:11 ` Linus Torvalds 2005-11-03 7:40 ` Junio C Hamano 0 siblings, 1 reply; 28+ messages in thread From: Linus Torvalds @ 2005-11-03 3:11 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On Wed, 2 Nov 2005, Junio C Hamano wrote: > > > git-whatchanged -p --pretty=short --since="2 weeks ago" v0.99.8..v0.99.9 Makefile > > > > is a valid query > > Well, it is not a valid query ;-) Nobody implemented --since > yet, but you could spell it --max-age. It would not grok "2 > weeks ago" though. Have you tried it? "--since" _works_. All the magic is in "git-rev-parse". Try it. > With the attached patch, you could at least do: > > git log --max-age='2005-10-25' v0.99.8..v0.99.9 Makefile No. Really. _try_ it. You can do git log --since="September 25" And ItJustWorks(tm). No patches needed. Anywhere. It's worked for quite a long time too. Since commit c1babb1d65e034a058c14379eabec8eb374757ca, to be exact. [PATCH] Teach "git-rev-parse" about date-based cut-offs Just use it. Linus ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] rev-list: make --max- and --min-age a bit more usable. 2005-11-03 3:11 ` Linus Torvalds @ 2005-11-03 7:40 ` Junio C Hamano 0 siblings, 0 replies; 28+ messages in thread From: Junio C Hamano @ 2005-11-03 7:40 UTC (permalink / raw) To: Linus Torvalds; +Cc: git Linus Torvalds <torvalds@osdl.org> writes: > All the magic is in "git-rev-parse". Try it. Ahhhh. I missed that. Thanks. -- >8 -- cut here -- >8 -- Document --since and --until options to rev-parse. The usability magic were hidden in the source code without being documented, and even the maintainer did not know about them ;-). Signed-off-by: Junio C Hamano <junkio@cox.net> --- diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt index 099db29..8b8068c 100644 --- a/Documentation/git-rev-parse.txt +++ b/Documentation/git-rev-parse.txt @@ -72,6 +72,14 @@ OPTIONS path of the current directory relative to the top-level directory. +--since=datestring, --after=datestring:: + Parses the date string, and outputs corresponding + --max-age= parameter for git-rev-list command. + +--until=datestring, --before=datestring:: + Parses the date string, and outputs corresponding + --min-age= parameter for git-rev-list command. + <args>...:: Flags and parameters to be parsed. ^ permalink raw reply related [flat|nested] 28+ messages in thread
end of thread, other threads:[~2005-11-03 7:40 UTC | newest] Thread overview: 28+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-10-30 1:29 GIT 0.99.9 Junio C Hamano 2005-10-30 3:16 ` A Large Angry SCM 2005-10-30 3:39 ` Junio C Hamano 2005-10-30 4:03 ` A Large Angry SCM 2005-10-30 13:21 ` Johannes Schindelin 2005-10-30 5:05 ` Linus Torvalds 2005-10-30 8:37 ` rev-list --sparse? Junio C Hamano 2005-10-30 21:42 ` Linus Torvalds 2005-10-30 23:31 ` Junio C Hamano 2005-10-30 17:20 ` GIT 0.99.9 Wolfgang Denk 2005-10-30 17:31 ` Junio C Hamano 2005-10-30 20:23 ` Wolfgang Denk 2005-10-30 20:46 ` Junio C Hamano 2005-10-31 3:21 ` Horst von Brand 2005-10-30 20:38 ` Wolfgang Denk 2005-10-30 22:31 ` Ryan Anderson 2005-10-30 22:54 ` Junio C Hamano 2005-10-30 23:03 ` H. Peter Anvin 2005-10-31 2:52 ` Linus Torvalds 2005-10-31 3:08 ` Junio C Hamano 2005-10-31 4:05 ` Linus Torvalds 2005-10-31 21:40 ` Archaeology [Was: Re: GIT 0.99.9] Horst von Brand 2005-10-31 23:47 ` Date-based limits (Was Re: GIT 0.99.9) Daniel Barkalow 2005-11-01 0:37 ` Date-based limits Junio C Hamano 2005-11-01 0:43 ` Daniel Barkalow 2005-11-02 19:02 ` [PATCH] rev-list: make --max- and --min-age a bit more usable Junio C Hamano 2005-11-03 3:11 ` Linus Torvalds 2005-11-03 7:40 ` Junio C Hamano
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).