From: Jakub Narebski Date: Fri, 27 Mar 2009 15:59:39 GMT Subject: Re: [PATCH] difftool: add support for an extended revision syntax Message-ID: In-Reply-To: <1237803348-9329-1-git-send-email-davvid@gmail.com> David Aguilar writes: > This adds an extended revision syntax to git-difftool. > Users often ask "how do I compare a file against its > previous version" and the answer is typically a combination > of 'git log ' and 'git difftool '. > > This makes answering that question considerably easier. > Users can now simply say: > > $ git difftool ~ > > to compare in the worktree against its > previous version, and: > > $ git difftool ~2 ~ > > to compare from 2 versions ago to 's > previous version, etc. Because ~ means (see git-rev-parse(1) for example) n-th parent in _first parent_ line, then ~ should also use first-parent line, otherwise you invite confusion. Also I am not sure about the syntax, as there are no restrictions on filenames, and filenames can contain '~'. Perhaps (proposed in this thread) ~: == "$(git rev-list -n --first-parent HEAD -- | tail):" But this might be mistaken for HEAD~:, which can be something else... > The extended revision syntax also expands revisions > that are suffixed with '!' as a convenient way to > see commit diffs. Specifying only '!' is equivalent > to specifying 'HEAD!'. > > This makes the following statements equivalent: > > $ git difftool ! > $ git difftool HEAD! > $ git difftool HEAD~ HEAD Errr... there already exists such syntax, and it is called HEAD^! (if git-difftool can accept a..b revision specification)... or not, as git-rev-parse(1) states: r1^! includes commit r1 but excludes all of its parents. So depending on how "r1 --not r1^" and "r1 --not r1^1 r1^2" is interpreted by diff (which accpets points, not ranges) it might be, or might be not what you wanted by introducying '!' / :! specification... -- Jakub Narebski Poland ShadeHawk on #git