소스 검색

Use lisp cd function to change directories to avoid shell dependencies

This fixes git version determination on windows for cygwin and for msysGit
where git is installed in the user's PATH for the windows command shell.
Bernt Hansen 16 년 전
부모
커밋
ffaa4ff134
1개의 변경된 파일20개의 추가작업 그리고 18개의 파일을 삭제
  1. 20 18
      lisp/org.el

+ 20 - 18
lisp/org.el

@@ -104,25 +104,27 @@ With prefix arg HERE, insert it at point."
   (interactive "P")
   (let* ((org-version org-version)
 	 (git-version)
-	 (dir (concat (file-name-directory (locate-library "org")) "../" )))
+	 (dir (concat (file-name-directory (locate-library "org")) "../" ))
+	 (version))
     (if (file-exists-p (expand-file-name ".git" dir))
-	(progn
-	 (shell-command (concat "cd " dir " && git describe --abbrev=4 HEAD"))
-	 (save-excursion
-	   (set-buffer "*Shell Command Output*")
-	   (goto-char (point-min))
-	   (replace-regexp "-" ".")
-	   (goto-char (point-min))
-	   (re-search-forward "[^\n]+")
-	   (setq git-version (match-string 0))
-	   (shell-command (concat "cd " dir " && git diff-index --name-only HEAD --"))
-	   (unless (eql 1 (point-max))
-	     (setq git-version (concat git-version ".dirty")))
-	   (setq org-version (concat org-version " (" git-version ")")))))
-    (let ((version (format "Org-mode version %s" org-version)))
-      (if here (insert version))
-      (message version)
-      version)))
+	(let ((pwd (substring (pwd) 10)))
+	  (cd dir)
+	  (shell-command "git describe --abbrev=4 HEAD")
+	  (save-excursion
+	    (set-buffer "*Shell Command Output*")
+	    (goto-char (point-min))
+	    (re-search-forward "[^\n]+")
+	    (setq git-version (match-string 0))
+	    (subst-char-in-string ?- ?. git-version t)
+	    (shell-command "git diff-index --name-only HEAD --")
+	    (unless (eql 1 (point-max))
+	      (setq git-version (concat git-version ".dirty")))
+	    (setq org-version (concat org-version " (" git-version ")")))
+	  (cd pwd)))
+    (setq version (format "Org-mode version %s" org-version))
+    (if here (insert version))
+    (message version)
+    version))
 
 ;;; Compatibility constants