Subject: 23.0.91; vc-dir for git uses wrong default directory
From: Lennart Staflin <[email-masked]>
To: [email-masked]
Date: Wed, 11 Mar 2009 21:08:32 +0100

With a working directory under Git control, doing a vc-dir from a
subdirectory produces a vc-dir buffer where all displayed paths are
relative to the working directory's top directory but the buffers
default directory is the subdirectory. The result is that many
commands like vc-dir-find-file and vc-diff dosen't work.

For instance, directory structure:
  top/
    .git
    foo/
      bar.txt

Doing a vc-dir from a buffer containing bar.txt gives

 VC backend : Git
 Working dir: ~/src/vcgit-bug/foo/
 Branch     : master

                          ./
                          foo/
      edited              foo/bar.txt

Moving to the foo/bar.txt line and pressing RET produces:
  "Use M-x make-directory RET RET to create the directory and its
    parents"
and a empty bar.txt buffer.

In GNU Emacs 23.0.91.3 (powerpc-apple-darwin8.11.0, NS apple-appkit-824.48)
 of 2009-03-09 on sin
Windowing system distributor `Apple', version 10.3.824
configured using `configure  '--with-ns' '--enable-maintainer-mode' 
'--without-x' '--with-jpeg' '--with-gif' '--with-png' 
'--disable-ns-self-contained' 'CFLAGS=-g''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: en_US.UTF-8
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: nil
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: VC dir

Minor modes in effect:
  diff-auto-refine-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  shell-dirtrack-mode: t
  show-paren-mode: t
  auto-insert-mode: t
  iswitchb-mode: t
  partial-completion-mode: t
  recentf-mode: t
  cua-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent input:
<left> <down> <down> <up> <right> <right> <right> <down>
<left> <down> <left> <up> <up> <up> <left> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <up> <up> <up> <up>
<up> <up> <up> <up> <up> <up> C-c j i r c <return>
<prior> <prior> <down-mouse-1> <mouse-1> <end> C-c
t v <tab> <up> <down> <down> <down> <down> <tab> <down>
<down> <down> C-c w <S-f3> C-x C-f e m <tab> l e n
<tab> <return> C-x d <return> n n n n n n n n n <S-f3>
C-x C-f / C-g C-x C-z <backspace> <return> <return>
c d <return> c d SPC s r c <return> m k d i r SPC v
c g i t - b u g <return> c d SPC v c <tab> <return>
l s <return> m k d i r SPC f o o <return> t o u c h
SPC f o o / b a r . t x t <return> g i t SPC i n i
t <return> g i t SPC a d d SPC . <return> g i t SPC
s t <return> g i t SPC c i SPC - m SPC " i n i t i
a l " <return> t o u c h SPC f <backspace> C-o <return>
C-x C-f f o o <tab> b a <tab> <return> H e j <return>
C-x C-s C-x v d <return> n n = p n f C-x k <return>
C-x 1 = q <f4> C-x C-b C-x b b a r <return> C-x v d
<return> C-h v d e a <backspace> f a u l <tab> d i
r <tab> <return> <backspace> <tab> <tab> o <tab> <return>
C-x 1 <menu-bar> <help-menu> <send-emacs-bug-repor
t>

Recent messages:
History item: 5
Saving file /Users/lenst/src/vcgit-bug/foo/bar.txt...
Wrote /Users/lenst/src/vcgit-bug/foo/bar.txt
Finding changes in /Users/lenst/src/vcgit-bug/foo/foo/bar.txt...
No changes between working revision and workfile
Use M-x make-directory RET RET to create the directory and its parents
Finding changes in /Users/lenst/src/vcgit-bug/foo/foo/bar.txt...
No changes between working revision and workfile
Quit
Type C-x 4 C-o RET to restore the other window.