Subject: bug#2678: 23.0.91; vc-next-action in vc-dir acts strangely when only adds are necessary

From: Miles Bader <[email-masked]>
Date: Sun, 15 Mar 2009 15:06:56 +0900

[Note: I have Dan's patch for fixing whole-directory vc-dir commit in
Git applied, though I don't think it should affect the following, as it
relates to final commit.]

If I have a vc-dir buffer showing a tree where the only entries are new
files (not yet registered with source-control):

   VC backend : Git
   Working dir: /tmp/zonk/
   Branch     : master

                            ./
        unregistered        llll
        unregistered        oiuoiu

Then hitting "v" on the first line of the buffer acts strangely -- I'd
expect it to simply register all these files with source control, but in
fact, it simply appears to do nothing.

There are actually several behaviors (though it always does nothing in
the end).  If this is the first time I've tried to do this, it just
displays a message like "Registering (/tmp/zonk/)... done" [where
"/tmp/zonk2" is the root of the working directory in question] but
doesn't seem to really do it.

If I then try the "v" command again, it will first show the message:

   Previous master file has vanished.  Make a new one? (y or n) 

If I enter "n" it just gives an error and aborts.

If I type "y", then it will either display a "Registering
(/tmp/zonk/)... done" message like the initial time (and again have no
real result), or show a *vc-log* buffer to prompt for an "initial
comment"; in the latter case, when I then hit C-c C-c to continue, the
*vc-log* buffer goes away -- but nothing further appears to happen.
[I'm not sure what causes it to open a *vc-log* buffer or not ... in my
initial tests it did, but when I tried again with emacs -Q, it didn't.]

Anyway, the end result is always the same, no registered files.

To reproduce:

  (1) Execute the following shell script to create a test repo in
      "/tmp/zonk2":

#!/bin/sh
cd /tmp
rm -rf zonk2
mkdir zonk2
cd zonk2
git init
echo plugh > ppling
git add .
git commit -m'Init' -a
echo Fnord >> newf1
echo Chnevy >> newf2

  (2) Start emacs:  HOME=/tmp emacs -Q -nw

  (3) Start vc-dir on the test repo:  C-x v d /tmp/zonk2 RET

  (4) Without moving the cursor, try to register the new files:  v
  
  (5) It will exhibit one of the faulty behaviors described above,
      resulting in no file registration being done.

Thanks,

-Miles

If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
    `bt full' and `xbacktrace'.
If you would like to further debug the crash, please read the file
/usr/local/share/emacs/23.0.91/etc/DEBUG for instructions.

In GNU Emacs 23.0.91.11 (x86_64-unknown-linux-gnu, GTK+ Version 2.15.5)
 of 2009-03-13 on catnip
Windowing system distributor `The X.Org Foundation', version 11.0.10599902
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: ja_JP.UTF-8
  value of $XMODIFIERS: @im=SCIM
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Message

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  mml-mode: t
  rcirc-track-minor-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-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:
SPC y o u SPC n <backspace> g i v e <escape> h s p 
e c i f y SPC ( a n d SPC l e a v e s SPC a n y SPC 
o t h e r s SPC a l o n e ) <return> - C-x d C-x b 
* G r SPC <return> K g C-c C-SPC C-c C-SPC C-c C-SPC 
K g n n n n n n n p p p p p p SPC SPC q n n SPC q n 
= SPC n n n q C-x b * v c SPC - d SPC r SPC / SPC <return> 
C-n C-n C-n C-n C-n C-n C-p C-n m C-u C-p C-p v w a 
c k y <return> C-c C-c x v z o i n k <return> c C-c 
C-c C-c C-g C-a C-n C-p C-p v y z o i n k <return> 
C-c C-c g g g C-h f C-g C-h e <escape> > C-x d C-n 
C-n C-n v y a o i n <return> C-c C-c C-u C-p c v y 
v o i n <return> C-c C-c C-n C-a C-n C-n C-n v C-c 
C-c C-u C-p C-p v p l o o n <return> C-c C-c C-a C-a 
C-x C-v p l C-g C-x C-v n e w f SPC 4 <return> l <return> 
<return> C-x C-s C-x k <return> C-u C-p v k o k <return> 
C-c C-c x C-x C-v l l l l <return> l k j <return> C-x 
C-s C-x k <return> C-p C-p v n C-a C-x h <escape> w 
C-x b * s e SPC m SPC SPC < 2 SPC <return> <escape> 
x r e p o SPC r SPC e SPC <return>

Recent messages:
Checking in /tmp/zonk/...done
(New file)
Saving file /tmp/zonk/llll...
Wrote /tmp/zonk/llll
xding
Previous master file has vanished.  Make a new one? (y or n) 
xding
vc-register: Aborted
Mark set [2 times]
Making completion list... [2 times]

-- 
Zeal, n. A certain nervous disorder afflicting the young and inexperienced.