cg-log: make -r id:id show the given id instead of nothing
PATCH 1/1 cg-log: make -r id:id show the given id instead of nothing
If cg-log is passed -r cogito-0.10 -r cogito-0.10 no log entries are shown. This patch make it show the log for the given ID.
cg-log (mode:100755) +3 -0
@@ -113,6 +113,9 @@ if [ "$log_end" ]; then id1="$(commit-id $log_start)" || exit 1 id2="$(commit-id $log_end)" || exit 1 + if [ "$id1" = "$id2" ]; then + id1=$(git-cat-file commit $id1 | sed -n '/^parent /,0s/parent //p') + fi revls="git-rev-tree $id2 ^$id1" revsort="sort -rn" revfmt="git-rev-tree"
Signature · 1 line
Jonas Fonseca
Dear diary, on Fri, May 20, 2005 at 05:04:00PM CEST, I got a letter where Jonas Fonseca <[email protected]> told me that...
Quoted 4 lines
If cg-log is passed -r cogito-0.10 -r cogito-0.10 no log entries are shown. This patch make it show the log for the given ID.
Signed-off-by Jonas Fonseca <[email protected]>
I don't like such a special case a lot. If you just want to make it possible to show up just a single revision by cg-log, what about -R or something, so that you don't need to write it twice?
Signature · 3 lines
Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor
Petr Baudis <[email protected]> wrote Sun, May 29, 2005:
Quoted 10 lines
Dear diary, on Fri, May 20, 2005 at 05:04:00PM CEST, I got a letter where Jonas Fonseca <[email protected]> told me that...
Quoted 4 lines
If cg-log is passed -r cogito-0.10 -r cogito-0.10 no log entries are shown. This patch make it show the log for the given ID.
Signed-off-by Jonas Fonseca <[email protected]>I don't like such a special case a lot. If you just want to make it possible to show up just a single revision by cg-log, what about -R or something, so that you don't need to write it twice?
I admit it is a bit weird. The reason for this was to make support for specifying revisions with something as fuzzy as dates more usable. Originally I modified commit-id to support it, but I've tried to move the logic to the new cg-Xnormid to just give an idea. It is suppose to add support for
$ cg-log -r '2005-05-12':'1 day ago'
but for some reason it seems to only work as expected for commits by you. That is it works as expected when I specify the dates for cogito-0.9 and cogito-0.10.
Of course supporting revisions via date specifications can lead to ambiguity problems when the date contains HH:MM' because the colon can confuse -r option parsing. This means that either a new option needs to be added (-D?) or the rev1:rev2 case has to be handled after all options has been parsed so that -r date1 -r date2' can be handled correctly.
cg-Xnormid (mode:100755) +8 -0
@@ -40,6 +40,14 @@ fi fi +if [ ${#id} -ne 40 ] || [ ! -f .git/objects/${id:0:2}/${id:2} ]; then + reqsecs=$(date --date="$id" +'%s' 2>/dev/null) + + if [ "$reqsecs" ]; then + id=$(git-rev-list --min-age=$reqsecs --max-count=1 HEAD) + fi +fi + # If we don't have a 40-char ID by now, it's an error if [ ${#id} -ne 40 ] || [ ! -f .git/objects/${id:0:2}/${id:2} ]; then echo "Invalid id: $id" >&2
Signature · 1 line
Jonas Fonseca