From: Vladimir Panteleev Date: Fri, 12 Mar 2010 14:52:45 GMT Subject: "git stash list" shows HEAD reflog Message-ID: I stumbled upon a curious problem with a repository: the command "git stash list" displayed the HEAD reflog instead of the stash list. The problem was caused by a very long line in ".git/logs/refs/stash". (The stash was based on a commit imported from Subversion, the commit message of which didn't follow git conventions.) The entire line was longer than 1023 characters, which is the buffer size passed to fgets in for_each_recent_reflog_ent. The validation check (buf[len-1] != '\n') causes the line to be skipped. The fix should be simple - if the line read didn't fit in the buffer, add a newline anyway instead of skipping the line entirely. That doesn't explain why git displayed the HEAD reflog, though. That seems to happen thanks to the check (revs->def && !revs->pending.nr) in setup_revisions ("HEAD" is the default, as specified in the caller cmd_log_init). It looks like (ideally) git shouldn't rely on whether revs->pending is empty to decide whether to use the default, but rather if a ref was specified by the user or not. -- Best regards, Vladimir mailto:vladimir@thecybershadow.net