mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 12:21:25 -08:00
(vc-git--empty-db-p)
(vc-git-after-dir-status-stage1-empty-db): New functions. (vc-git-dir-status, vc-git-after-dir-status-stage1, vc-git-state): Add support for empty repositories.
This commit is contained in:
parent
dd3ffb9a38
commit
8e4e4aefb6
2 changed files with 30 additions and 5 deletions
|
|
@ -1,3 +1,10 @@
|
|||
2008-03-22 Alexandre Julliard <julliard@winehq.org>
|
||||
|
||||
* vc-git.el (vc-git--empty-db-p)
|
||||
(vc-git-after-dir-status-stage1-empty-db): New functions.
|
||||
(vc-git-dir-status, vc-git-after-dir-status-stage1, vc-git-state):
|
||||
Add support for empty repositories.
|
||||
|
||||
2008-03-22 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* vc-git.el (vc-git-annotate-extract-revision-at-line):
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@
|
|||
(if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMU]\\)\0[^\0]+\0"
|
||||
diff))
|
||||
(if (string= (match-string 1 diff) "A") 'added 'edited)
|
||||
'up-to-date)))
|
||||
(if (vc-git--empty-db-p) 'added 'up-to-date))))
|
||||
|
||||
(defun vc-git--ls-files-state (state &rest args)
|
||||
"Set state to STATE on all files found with git-ls-files ARGS."
|
||||
|
|
@ -229,10 +229,19 @@
|
|||
(vc-exec-after
|
||||
`(vc-git-after-dir-status-stage2 (quote ,update-function) ,status-buffer)))
|
||||
|
||||
(defun vc-git-after-dir-status-stage1-empty-db (update-function status-buffer)
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "\\([^\0]*?\\)\0" nil t 1)
|
||||
(push (cons (match-string 1) 'added) vc-git-status-result))
|
||||
(erase-buffer)
|
||||
(vc-git-command (current-buffer) 'async nil "ls-files" "-z" "-o"
|
||||
"--directory" "--no-empty-directory" "--exclude-standard")
|
||||
(vc-exec-after
|
||||
`(vc-git-after-dir-status-stage2 (quote ,update-function) ,status-buffer)))
|
||||
|
||||
(defun vc-git-dir-status (dir update-function status-buffer)
|
||||
"Return a list of conses (file . state) for DIR."
|
||||
;; Further things that would have to be fixed later:
|
||||
;; - support for an empty repository (with no initial commit)
|
||||
;; - how to handle unregistered directories
|
||||
;; - how to support vc-status on a subdir of the project tree
|
||||
(with-current-buffer
|
||||
|
|
@ -241,9 +250,14 @@
|
|||
(set (make-local-variable 'vc-git-status-result) nil)
|
||||
(cd dir)
|
||||
(erase-buffer)
|
||||
(vc-git-command (current-buffer) 'async nil "diff-index" "-z" "HEAD")
|
||||
(vc-exec-after
|
||||
`(vc-git-after-dir-status-stage1 (quote ,update-function) ,status-buffer))
|
||||
(if (vc-git--empty-db-p)
|
||||
(progn
|
||||
(vc-git-command (current-buffer) 'async nil "ls-files" "-z" "-c")
|
||||
(vc-exec-after
|
||||
`(vc-git-after-dir-status-stage1-empty-db (quote ,update-function) ,status-buffer)))
|
||||
(vc-git-command (current-buffer) 'async nil "diff-index" "-z" "HEAD")
|
||||
(vc-exec-after
|
||||
`(vc-git-after-dir-status-stage1 (quote ,update-function) ,status-buffer)))
|
||||
(current-buffer)))
|
||||
|
||||
;;; STATE-CHANGING FUNCTIONS
|
||||
|
|
@ -482,6 +496,10 @@ or BRANCH^ (where \"^\" can be repeated)."
|
|||
The difference to vc-do-command is that this function always invokes `git'."
|
||||
(apply 'vc-do-command buffer okstatus "git" file-or-list flags))
|
||||
|
||||
(defun vc-git--empty-db-p ()
|
||||
"Check if the git db is empty (no commit done yet)."
|
||||
(not (eq 0 (vc-git--call nil "rev-parse" "--verify" "HEAD"))))
|
||||
|
||||
(defun vc-git--call (buffer command &rest args)
|
||||
;; We don't need to care the arguments. If there is a file name, it
|
||||
;; is always a relative one. This works also for remote
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue