GNU bug report logs -
#908
Displaying renamed files in vc-dir for bzr is incorrect
Previous Next
Reported by: Dan Nicolaescu <dann <at> ics.uci.edu>
Date: Sun, 7 Sep 2008 10:55:04 UTC
Severity: normal
Done: Chong Yidong <cyd <at> stupidchicken.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 908 in the body.
You can then email your comments to 908 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded to
bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>
:
bug#908
; Package
emacs
.
Full text and
rfc822 format available.
Acknowledgement sent to
Dan Nicolaescu <dann <at> ics.uci.edu>
:
New bug report received and forwarded. Copy sent to
Emacs Bugs <bug-gnu-emacs <at> gnu.org>
.
Full text and
rfc822 format available.
Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):
When using Bzr, renamed files for are shown like this in vc-dir:
nil OLD_NAME => NEW_NAME
where `nil' is supposed to be the VC state and `OLD_NAME => NEW_NAME' is
believed to be a file name...
The patch below fixes this. Not sure if this is appropriate to check in
now given the feature freeze, as the patch needs to add a feature in
order to fix the bug. So record the fix here so that it does not get
lost.
* vc-bzr.el (vc-bzr-extra-fileinfo): New defstruct.
(vc-bzr-status-printer): New function.
(vc-bzr-after-dir-status): Deal with renamed files.
Index: vc-bzr.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc-bzr.el,v
retrieving revision 1.65
diff -u -3 -p -u -p -r1.65 vc-bzr.el
--- vc-bzr.el 10 Aug 2008 19:48:57 -0000 1.65
+++ vc-bzr.el 7 Sep 2008 10:36:07 -0000
@@ -52,7 +52,8 @@
(eval-when-compile
(require 'cl)
- (require 'vc)) ; for vc-exec-after
+ (require 'vc) ; for vc-exec-after
+ (require 'vc-dir))
;; Clear up the cache to force vc-call to check again and discover
;; new functions when we reload this file.
@@ -576,6 +577,22 @@ stream. Standard error output is discar
;; else fall back to default vc.el representation
(vc-default-prettify-state-info 'Bzr file)))
+(defstruct (vc-bzr-extra-fileinfo
+ (:copier nil)
+ (:constructor vc-bzr-create-extra-fileinfo (extra-name))
+ (:conc-name vc-bzr-extra-fileinfo->))
+ extra-name) ;; original name for rename targets, new name for
+
+(defun vc-bzr-status-printer (info)
+ "Pretty-printer for the vc-dir-fileinfo structure."
+ (let ((extra (vc-dir-fileinfo->extra info)))
+ (vc-default-status-printer 'Bzr info)
+ (when extra
+ (insert (propertize
+ (format " (renamed from %s)"
+ (vc-bzr-extra-fileinfo->extra-name extra))
+ 'face 'font-lock-comment-face)))))
+
;; FIXME: this needs testing, it's probably incomplete.
(defun vc-bzr-after-dir-status (update-function)
(let ((status-str nil)
@@ -589,6 +606,9 @@ stream. Standard error output is discar
;; For conflicts, should we list the .THIS/.BASE/.OTHER?
("C " . conflict)
("? " . unregistered)
+ ("? " . unregistered)
+ ;; No such state, but we need to distinguish this case.
+ ("R " . renamed)
;; Ignore "P " and "P." for pending patches.
))
(translated nil)
@@ -598,23 +618,31 @@ stream. Standard error output is discar
(setq status-str
(buffer-substring-no-properties (point) (+ (point) 3)))
(setq translated (cdr (assoc status-str translation)))
- ;; For conflicts the file appears twice in the listing: once
- ;; with the M flag and once with the C flag, so take care not
- ;; to add it twice to `result'. Ugly.
- (if (eq translated 'conflict)
- (let* ((file
- (buffer-substring-no-properties
- ;;For files with conflicts the format is:
- ;;C Text conflict in FILENAME
- ;; Bah.
- (+ (point) 21) (line-end-position)))
- (entry (assoc file result)))
- (when entry
- (setf (nth 1 entry) 'conflict)))
+ (cond
+ ((eq translated 'conflict)
+ ;; For conflicts the file appears twice in the listing: once
+ ;; with the M flag and once with the C flag, so take care
+ ;; not to add it twice to `result'. Ugly.
+ (let* ((file
+ (buffer-substring-no-properties
+ ;;For files with conflicts the format is:
+ ;;C Text conflict in FILENAME
+ ;; Bah.
+ (+ (point) 21) (line-end-position)))
+ (entry (assoc file result)))
+ (when entry
+ (setf (nth 1 entry) 'conflict))))
+ ((eq translated 'renamed)
+ (re-search-forward "R \\(.*\\) => \\(.*\\)$" (line-end-position) t)
+ (let ((new-name (match-string 2))
+ (old-name (match-string 1)))
+ (push (list new-name 'edited
+ (vc-bzr-create-extra-fileinfo old-name)) result)))
+ (t
(push (list (buffer-substring-no-properties
(+ (point) 4)
(line-end-position))
- translated) result))
+ translated) result)))
(forward-line))
(funcall update-function result)))
Information forwarded to
bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>
:
bug#908
; Package
emacs
.
Full text and
rfc822 format available.
Acknowledgement sent to
Chong Yidong <cyd <at> stupidchicken.com>
:
Extra info received and forwarded to list. Copy sent to
Emacs Bugs <bug-gnu-emacs <at> gnu.org>
.
Full text and
rfc822 format available.
Message #10 received at 908 <at> emacsbugs.donarmstrong.com (full text, mbox):
> When using Bzr, renamed files for are shown like this in vc-dir:
>
> nil OLD_NAME => NEW_NAME
>
> where `nil' is supposed to be the VC state and `OLD_NAME => NEW_NAME' is
> believed to be a file name...
>
> The patch below fixes this. Not sure if this is appropriate to check in
> now given the feature freeze, as the patch needs to add a feature in
> order to fix the bug. So record the fix here so that it does not get
> lost.
Please do check in your patch, since it fixes a bug.
Information forwarded to
bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>
:
bug#908
; Package
emacs
.
Full text and
rfc822 format available.
Acknowledgement sent to
Dan Nicolaescu <dann <at> ics.uci.edu>
:
Extra info received and forwarded to list. Copy sent to
Emacs Bugs <bug-gnu-emacs <at> gnu.org>
.
Full text and
rfc822 format available.
Message #15 received at 908 <at> emacsbugs.donarmstrong.com (full text, mbox):
Chong Yidong <cyd <at> stupidchicken.com> writes:
> > When using Bzr, renamed files for are shown like this in vc-dir:
> >
> > nil OLD_NAME => NEW_NAME
> >
> > where `nil' is supposed to be the VC state and `OLD_NAME => NEW_NAME' is
> > believed to be a file name...
> >
> > The patch below fixes this. Not sure if this is appropriate to check in
> > now given the feature freeze, as the patch needs to add a feature in
> > order to fix the bug. So record the fix here so that it does not get
> > lost.
>
> Please do check in your patch, since it fixes a bug.
Done. Thanks!
bug closed, send any further explanations to Dan Nicolaescu <dann <at> ics.uci.edu>
Request was from
Chong Yidong <cyd <at> stupidchicken.com>
to
control <at> emacsbugs.donarmstrong.com
.
(Sun, 07 Sep 2008 19:00:05 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <don <at> donarmstrong.com>
to
internal_control <at> emacsbugs.donarmstrong.com
.
(Mon, 06 Oct 2008 14:24:03 GMT)
Full text and
rfc822 format available.
This bug report was last modified 16 years and 257 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.