git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* bug with .git file and aliases
@ 2009-07-20 13:54 Geoffrey Irving
  2009-07-20 14:04 ` Santi Béjar
  2009-07-20 15:21 ` Jeff King
  0 siblings, 2 replies; 13+ messages in thread
From: Geoffrey Irving @ 2009-07-20 13:54 UTC (permalink / raw)
  To: git, Lars Hjemli

git 1.6.3.3 has a bug related to .git file support and aliases.
Specifically, if you make an alias for status and call it from a
subdirectory, git status chdirs into the true .git dir but then
chdir's back to the wrong place in order to run the lstats for status.
 The result is that git status thinks all files have disappeared.

Here's a self-contained test script:

    #!/bin/bash
    set -x

    # make a simple repository
    mkdir repo
    cd repo
    git init
    mkdir a
    echo content > a/b
    git add a/b
    git commit -m "a commit"

    # replace the gitdir with a gitfile
    mv .git ../repo.git
    echo gitdir: `pwd`.git > .git

    # normal git status works
    cd a
    git status

    # an alias for git status fails
    git config alias.st status
    git st

which produces output

top:tmp% ./bug
++ mkdir repo
++ cd repo
++ git init
Initialized empty Git repository in /Users/irving/tmp/tmp/repo/.git/
++ mkdir a
++ echo content
++ git add a/b
++ git commit -m 'a commit'
[master (root-commit) 6b07ec4] a commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 a/b
++ mv .git ../repo.git
+++ pwd
++ echo gitdir: /Users/irving/tmp/tmp/repo.git
++ cd a
++ git status
# On branch master
nothing to commit (working directory clean)
++ git config alias.st status
++ git st
# On branch master
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	deleted:    a/b
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	b
no changes added to commit (use "git add" and/or "git commit -a")

.git file support also doesn't work on a repository with no commits
(which is why the test script makes a commit normally before switching
to a gitfile).  However, I care about this second problem much less,
and didn't notice it until I made the test script.

Finally, huge thanks to Lars for implementing this.  I'm storing git
working directories inside vesta, and symlink support is currently
disabled.  It's very pleasant to grep through the source and find that
someone already fixed exactly my problem. :)

Geoffrey

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2009-08-11 12:52 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-20 13:54 bug with .git file and aliases Geoffrey Irving
2009-07-20 14:04 ` Santi Béjar
2009-07-20 14:27   ` Geoffrey Irving
2009-07-20 15:18     ` Santi Béjar
2009-07-20 15:25       ` Geoffrey Irving
2009-07-20 15:21 ` Jeff King
2009-08-10 20:22   ` Geoffrey Irving
2009-08-10 23:05     ` Johannes Schindelin
2009-08-11  3:37       ` Geoffrey Irving
2009-08-11  8:33         ` Johannes Schindelin
2009-08-11 10:04   ` Michael J Gruber
2009-08-11 10:26     ` Johannes Sixt
2009-08-11 10:37       ` Michael J Gruber

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).