unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#9781: 24.0.90; VC can't commit removed files/directories.
@ 2011-10-18  6:36 Jan Djärv
  2011-10-18  6:59 ` Glenn Morris
  2011-10-20 21:05 ` Glenn Morris
  0 siblings, 2 replies; 10+ messages in thread
From: Jan Djärv @ 2011-10-18  6:36 UTC (permalink / raw)
  To: 9781

This bug report will be sent to the Bug-GNU-Emacs mailing list
and the GNU bug tracker at debbugs.gnu.org.  Please check that
the From: line contains a valid email address.  After a delay of up
to one day, you should receive an acknowledgement at that address.

Please write in English if possible, as the Emacs maintainers
usually do not have translators for other languages.

Please describe exactly what actions triggered the bug, and
the precise symptoms of the bug.  If you can, give a recipe
starting from `emacs -Q':

I'm surprised nobody has seen this.

In a bzr repository, do
% bzr rm some-file

and modify some other file.

Then in Emacs, do vc-dir on the directory where the file was.
Mark the file that is listed as removed.  Also mark the edited file.
Press v.

Expected result: I can type in a log message and commit.
Real result: A prompt in the minibuffer appears:
some-file is edited but read-only; make it writable and continue? (y/n) 

This is because in vc.el, vc-next-action there is this:

      (let ((ready-for-commit files))
	;; If files are edited but read-only, give user a chance to correct
	(dolist (file files)
	  (unless (file-writable-p file)
	    ;; Make the file+buffer read-write.
	    (unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue? " file))
	      (error "Aborted"))
            ;; Maybe we somehow lost permissions on the directory.
            (condition-case nil
                (set-file-modes file (logior (file-modes file) 128))
              (error (error "Unable to make file writable")))

Files/directories that are removed are obviously not file-writable-p, so the logic is wrong.
Also, the choices in the question should be three:

1 Make writable and continue.
2 Don't make writable and continue
3 Abort

As it is now, you either exit on the "Aborted" error or if you try to continue on the "Unable to make file writable" error.

	Jan D.


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'.
For information about debugging Emacs, please read the file
/Users/jhd/Applications/Emacs.app/Contents/Resources/etc/DEBUG.


In GNU Emacs 24.0.90.1 (x86_64-apple-darwin11.2.0, NS apple-appkit-1138.23)
of 2011-10-18 on zeplin
Windowing system distributor `Apple', version 10.3.1138
configured using `configure  '--verbose' '--enable-asserts' '--with-ns' '--without-x-toolkit' 'CFLAGS=-g''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: C
  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: sv_SE.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  desktop-save-mode: t
  delete-selection-mode: t
  icomplete-mode: t
  display-time-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<escape> x r e p o r t - e m <tab> <return>

Recent messages:
Loading /Users/jhd/lib/elisp/BAK-file.el (source)...done
Loading /Users/jhd/lib/elisp/ccsetup.el (source)...done
Loading icomplete...done
Loading desktop...done
No desktop file.
For information about GNU Emacs and the GNU system, type C-h C-a.

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr message format-spec rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader
emacsbug desktop cus-start cus-load msb delsel advice help-fns
advice-preload icomplete cc-mode cc-fonts easymenu cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs regexp-opt time
time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel ns-win
tool-bar dnd fontset image fringe lisp-mode register page menu-bar
rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax
facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak
czech european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces
cus-face files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
make-network-process ns multi-tty emacs)





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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-18  6:36 bug#9781: 24.0.90; VC can't commit removed files/directories Jan Djärv
@ 2011-10-18  6:59 ` Glenn Morris
  2011-10-19  7:01   ` Dan Nicolaescu
  2011-10-20 21:05 ` Glenn Morris
  1 sibling, 1 reply; 10+ messages in thread
From: Glenn Morris @ 2011-10-18  6:59 UTC (permalink / raw)
  To: Jan Djärv; +Cc: 9781

Jan Djärv wrote:

> I'm surprised nobody has seen this.

It is a long-known issue that vc-dir does not handle removed files
totally correctly, though I haven't seen the particular symptoms you
describe.

http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3214





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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-18  6:59 ` Glenn Morris
@ 2011-10-19  7:01   ` Dan Nicolaescu
  0 siblings, 0 replies; 10+ messages in thread
From: Dan Nicolaescu @ 2011-10-19  7:01 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 9781

Glenn Morris <rgm@gnu.org> writes:

> Jan Djärv wrote:
>
>> I'm surprised nobody has seen this.
>
> It is a long-known issue that vc-dir does not handle removed files
> totally correctly,

The problem is in the vc-bzr backend.

vc-bzr-status should return nil when called for a file that has been
removed.  It does not.

Also it looks like there's a disconnect between 
bzr help status
[snip]
 unknown
      Not versioned and not matching an ignore pattern.


and the actual output:

bzr status NON_EXISTENT_FILE
nonexistent:
  NON_EXISTENT_FILE
bzr: ERROR: Path(s) do not exist: NON_EXISTENT_FILE
Exit 3






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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-18  6:36 bug#9781: 24.0.90; VC can't commit removed files/directories Jan Djärv
  2011-10-18  6:59 ` Glenn Morris
@ 2011-10-20 21:05 ` Glenn Morris
  2011-10-20 21:09   ` Glenn Morris
  2011-10-21  9:13   ` Jan Djärv
  1 sibling, 2 replies; 10+ messages in thread
From: Glenn Morris @ 2011-10-20 21:05 UTC (permalink / raw)
  To: Jan Djärv; +Cc: 9781

Jan Djärv wrote:

> In a bzr repository, do
> % bzr rm some-file
>
> and modify some other file.
>
> Then in Emacs, do vc-dir on the directory where the file was.
> Mark the file that is listed as removed.  Also mark the edited file.
> Press v.
>
> Expected result: I can type in a log message and commit.
> Real result: A prompt in the minibuffer appears:
> some-file is edited but read-only; make it writable and continue? (y/n) 

Fixed. Now you will be able to commit (and then get bug#3214).

Actually the problem only happens with removed directories (because
file-writable-p also returns non-nil if a file can be created).
Recipe:

mkdir /tmp/foo
cd /tmp/foo
bzr init
mkdir subdir
touch file subdir/subfile
bzr add
bzr commit -m "c1"
bzr remove subdir
echo 1 >> file
emacs -Q
M-x vc-dir RET
M
v

> Also, the choices in the question should be three:
>
> 1 Make writable and continue.
> 2 Don't make writable and continue
> 3 Abort

Isn't ctrl-g good enough for aborting, rather than introducing a 3-state
question?






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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-20 21:05 ` Glenn Morris
@ 2011-10-20 21:09   ` Glenn Morris
  2011-10-21  9:15     ` Jan Djärv
  2011-10-21  9:13   ` Jan Djärv
  1 sibling, 1 reply; 10+ messages in thread
From: Glenn Morris @ 2011-10-20 21:09 UTC (permalink / raw)
  To: Jan Djärv; +Cc: 9781

Glenn Morris wrote:

>> 1 Make writable and continue.
>> 2 Don't make writable and continue
>> 3 Abort
>
> Isn't ctrl-g good enough for aborting, rather than introducing a 3-state
> question?

Ignore that, I misunderstood option 2.
"Don't make writable, but continue committing anyway."
(Will that cause an error with whatever VCS this issue is still relevant for?)





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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-20 21:05 ` Glenn Morris
  2011-10-20 21:09   ` Glenn Morris
@ 2011-10-21  9:13   ` Jan Djärv
  1 sibling, 0 replies; 10+ messages in thread
From: Jan Djärv @ 2011-10-21  9:13 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 9781@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]

Hello.


20 okt 2011 kl. 23:05 skrev Glenn Morris <rgm@gnu.org>:

> 
> Fixed. Now you will be able to commit (and then get bug#3214).
> 
> Actually the problem only happens with removed directories (because
> file-writable-p also returns non-nil if a file can be created).

I was indeed removing a directory.

> 
> 
>> Also, the choices in the question should be three:
>> 
>> 1 Make writable and continue.
>> 2 Don't make writable and continue
>> 3 Abort
> 
> Isn't ctrl-g good enough for aborting, rather than introducing a 3-state
> question?

I wanted 2, that option was not available. Only 1 and 3 could be choosen.  Ctrl-g also does 3.

   Jan D.


[-- Attachment #2: Type: text/html, Size: 1395 bytes --]

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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-20 21:09   ` Glenn Morris
@ 2011-10-21  9:15     ` Jan Djärv
  2011-10-29 18:32       ` Glenn Morris
  0 siblings, 1 reply; 10+ messages in thread
From: Jan Djärv @ 2011-10-21  9:15 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 9781@debbugs.gnu.org

Hi.


20 okt 2011 kl. 23:09 skrev Glenn Morris <rgm@gnu.org>:

> Glenn Morris wrote:
> 
>>> 1 Make writable and continue.
>>> 2 Don't make writable and continue
>>> 3 Abort
>> 
>> Isn't ctrl-g good enough for aborting, rather than introducing a 3-state
>> question?
> 
> Ignore that, I misunderstood option 2.
> "Don't make writable, but continue committing anyway."

Too late :-)

> (Will that cause an error with whatever VCS this issue is still relevant for?)

I guess we have to check all backends individually. 

    Jan D.






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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-21  9:15     ` Jan Djärv
@ 2011-10-29 18:32       ` Glenn Morris
  2011-10-29 19:46         ` Stefan Monnier
  0 siblings, 1 reply; 10+ messages in thread
From: Glenn Morris @ 2011-10-29 18:32 UTC (permalink / raw)
  To: Jan Djärv; +Cc: 9781@debbugs.gnu.org

Jan Djärv wrote:

> I guess we have to check all backends individually. 

I checked CVS, SVN and bzr; all have no problems committing read-only
files. So this whole "is the file read-only" check should simply be
skipped for those backends IMO. (I suspect only RCS is going to care
about read-onlyness.)





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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-29 18:32       ` Glenn Morris
@ 2011-10-29 19:46         ` Stefan Monnier
  2012-09-27  7:01           ` Glenn Morris
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2011-10-29 19:46 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 9781@debbugs.gnu.org

> skipped for those backends IMO. (I suspect only RCS is going to care
> about read-onlyness.)

Indeed.  OR maybe SCCS as well, but everything else should pay little
attention to read-only-ness (at most it will record it in the
repository).


        Stefan





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

* bug#9781: 24.0.90; VC can't commit removed files/directories.
  2011-10-29 19:46         ` Stefan Monnier
@ 2012-09-27  7:01           ` Glenn Morris
  0 siblings, 0 replies; 10+ messages in thread
From: Glenn Morris @ 2012-09-27  7:01 UTC (permalink / raw)
  To: 9781-done

Version: 24.3

I restricted the toggle-read-only business to RCS and SCCS (the latter
might not even need it either).





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

end of thread, other threads:[~2012-09-27  7:01 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-18  6:36 bug#9781: 24.0.90; VC can't commit removed files/directories Jan Djärv
2011-10-18  6:59 ` Glenn Morris
2011-10-19  7:01   ` Dan Nicolaescu
2011-10-20 21:05 ` Glenn Morris
2011-10-20 21:09   ` Glenn Morris
2011-10-21  9:15     ` Jan Djärv
2011-10-29 18:32       ` Glenn Morris
2011-10-29 19:46         ` Stefan Monnier
2012-09-27  7:01           ` Glenn Morris
2011-10-21  9:13   ` Jan Djärv

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).