Mercurial > emacs
changeset 80132:bbd6defe1e72
(vc-find-root): Remove initial loop because it's not
careful enough. Detect the uid-change all within the main loop.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 16 Feb 2008 21:38:24 +0000 |
parents | 684473b333ab |
children | 86666002b78d |
files | lisp/ChangeLog lisp/vc-hooks.el |
diffstat | 2 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sat Feb 16 20:21:16 2008 +0000 +++ b/lisp/ChangeLog Sat Feb 16 21:38:24 2008 +0000 @@ -1,3 +1,8 @@ +2008-02-16 Stefan Monnier <monnier@iro.umontreal.ca> + + * vc-hooks.el (vc-find-root): Remove initial loop because it's not + careful enough. Detect the uid-change all within the main loop. + 2008-02-14 Stefan Monnier <monnier@pastel.home> * textmodes/sgml-mode.el (sgml-mode): Fix comment syntax.
--- a/lisp/vc-hooks.el Sat Feb 16 20:21:16 2008 +0000 +++ b/lisp/vc-hooks.el Sat Feb 16 21:38:24 2008 +0000 @@ -316,11 +316,12 @@ If WITNESS if not found, return nil, otherwise return the root." ;; Represent /home/luser/foo as ~/foo so that we don't try to look for ;; witnesses in /home or in /. - (while (not (file-directory-p file)) - (setq file (file-name-directory (directory-file-name file)))) (setq file (abbreviate-file-name file)) (let ((root nil) - (user (nth 2 (file-attributes file)))) + ;; `user' is not initialized outside the loop because + ;; `file' may not exist, so we may have to walk up part of the + ;; hierarchy before we find the "initial UID". + (user nil)) (while (not (or root (null file) ;; As a heuristic, we stop looking up the hierarchy of @@ -328,7 +329,9 @@ ;; to another user. This should save us from looking in ;; things like /net and /afs. This assumes that all the ;; files inside a project belong to the same user. - (not (equal user (nth 2 (file-attributes file)))) + (let ((prev-user user)) + (setq user (nth 2 (file-attributes file))) + (and prev-user (not (equal user prev-user)))) (string-match vc-ignore-dir-regexp file))) (if (file-exists-p (expand-file-name witness file)) (setq root file)