Mercurial > emacs
changeset 81987:8d88b0199c17
(vc-find-root): Fix case where `file' is the current
directory and the root as well.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 20 Jul 2007 03:48:27 +0000 |
parents | 7179773d9d7f |
children | 09a639d5f43e |
files | lisp/ChangeLog lisp/vc-hooks.el |
diffstat | 2 files changed, 19 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Fri Jul 20 03:15:19 2007 +0000 +++ b/lisp/ChangeLog Fri Jul 20 03:48:27 2007 +0000 @@ -1,3 +1,8 @@ +2007-07-20 Stefan Monnier <monnier@iro.umontreal.ca> + + * vc-hooks.el (vc-find-root): Fix case where `file' is the current + directory and the root as well. + 2007-07-20 Dan Nicolaescu <dann@ics.uci.edu> * vc-hooks.el (vc-default-workfile-unchanged-p): Pass a list @@ -5,8 +10,7 @@ * vc-hg.el (vc-hg-print-log): Deal with multiple file arguments. (vc-hg-registered): Replace if with when. - (vc-hg-state): Deal with nonexistent files and handle removed - files. + (vc-hg-state): Deal with nonexistent files and handle removed files. (vc-hg-dir-state, vc-hg-dired-state-info): New functions. (vc-hg-checkout): Re-enable. (vc-hg-create-repo): Fix typos.
--- a/lisp/vc-hooks.el Fri Jul 20 03:15:19 2007 +0000 +++ b/lisp/vc-hooks.el Fri Jul 20 03:48:27 2007 +0000 @@ -317,24 +317,25 @@ 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-exists-p file)) + (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)))) (while (not (or root - (equal file (setq file (file-name-directory file))) - (null file) - ;; As a heuristic, we stop looking up the hierarchy of - ;; directories as soon as we find a directory belonging - ;; 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)))) - (string-match vc-ignore-dir-regexp file))) + (null file) + ;; As a heuristic, we stop looking up the hierarchy of + ;; directories as soon as we find a directory belonging + ;; 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)))) + (string-match vc-ignore-dir-regexp file))) (if (file-exists-p (expand-file-name witness file)) - (setq root file) - (setq file (directory-file-name file)))) + (setq root file) + (if (equal file + (setq file (file-name-directory (directory-file-name file)))) + (setq file nil)))) root)) ;; Access functions to file properties