]> git.eshelyaron.com Git - emacs.git/commitdiff
(vc-cvs-parse-root): Handle roots without colon between hostname and path.
authorSam Steingold <sds@gnu.org>
Wed, 12 Nov 2008 04:47:18 +0000 (04:47 +0000)
committerSam Steingold <sds@gnu.org>
Wed, 12 Nov 2008 04:47:18 +0000 (04:47 +0000)
lisp/ChangeLog
lisp/vc-cvs.el

index 935fa82b10d5e073f28cbbd8d611ecb489f9a912..a9f5e15987a429d36a20bf7dfb10f80847164333 100644 (file)
@@ -1,3 +1,8 @@
+2008-11-12  Sam Steingold  <sds@gnu.org>
+
+       * vc-cvs.el (vc-cvs-parse-root): Handle roots without colon
+       between hostname and path.
+
 2008-11-11  Juri Linkov  <juri@jurta.org>
 
        * dired-aux.el (dired-isearch-filenames)
index cd5c86fe7f25282030ab8ef9c7dd078fb66f0194..1e47a6543f217bd5af7f441173ed1c3f78b6c470 100644 (file)
@@ -720,10 +720,16 @@ and that it passes `vc-cvs-global-switches' to it before FLAGS."
                (buffer-substring (point)
                                  (line-end-position))))))))
 
+(defun vc-cvs-parse-uhp (path)
+  "parse user@host/path into (user@host /path)"
+  (if (string-match "\\([^/]+\\)\\(/.*\\)" path)
+      (list (match-string 1 path) (match-string 2 path))
+      (list nil path)))
+
 (defun vc-cvs-parse-root (root)
   "Split CVS ROOT specification string into a list of fields.
 A CVS root specification of the form
-  [:METHOD:][[USER@]HOSTNAME:]/path/to/repository
+  [:METHOD:][[USER@]HOSTNAME]:?/path/to/repository
 is converted to a normalized record with the following structure:
   \(METHOD USER HOSTNAME CVS-ROOT).
 The default METHOD for a CVS root of the form
@@ -745,17 +751,16 @@ For an empty string, nil is returned (invalid CVS root)."
             ;; Invalid CVS root
             nil)
            ((= len 1)
-            ;; Simple PATH => method `local'
-            (cons "local"
-                  (cons nil root-list)))
+            (let ((uhp (vc-cvs-parse-uhp (car root-list))))
+              (cons (if (car uhp) "ext" "local") uhp)))
            ((= len 2)
             ;; [USER@]HOST:PATH => method `ext'
             (and (not (equal (car root-list) ""))
                  (cons "ext" root-list)))
            ((= len 3)
-            ;; :METHOD:PATH
+            ;; :METHOD:PATH or :METHOD:USER@HOSTNAME/PATH
             (cons (cadr root-list)
-                  (cons nil (cddr root-list))))
+                  (vc-cvs-parse-uhp (caddr root-list))))
            (t
             ;; :METHOD:[USER@]HOST:PATH
             (cdr root-list)))))