summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Dominik <carsten.dominik@gmail.com>2010-03-24 22:17:28 +0100
committerCarsten Dominik <carsten.dominik@gmail.com>2010-03-24 22:17:28 +0100
commit7e476db19639a5de4b8754a158844590e8586216 (patch)
tree4a7246d84ac191f5b85d5f32c3ffca54999d2772
parent1d4ee49c91bf3e5d477180ab45d8ddc3f99915e7 (diff)
downloadorg-mode-7e476db19639a5de4b8754a158844590e8586216.tar.gz
Attachments: Remove dependence on xargs
Patch by David Maus, who writes: > Attached patch for org-attach-commit in org-attach.el removes the > dependency on the xargs command to remove files in the repository that > were deleted in the attachment directory. > > Simply capture output of git ls-files --deleted -z in a temporary > buffer, get the filenames from there via string-split and call git rm > on each single file.
-rwxr-xr-xlisp/ChangeLog2
-rw-r--r--lisp/org-attach.el17
2 files changed, 13 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ff53cf1..e26454e 100755
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,7 @@
2010-03-24 Carsten Dominik <carsten.dominik@gmail.com>
+ * org-attach.el (org-attach-commit): Remove dependence on xargs.
+
* org-latex.el (org-export-latex-fontify): Do not mistake table.el
borders for strike-through emphasis.
diff --git a/lisp/org-attach.el b/lisp/org-attach.el
index 0428001..61b85c4 100644
--- a/lisp/org-attach.el
+++ b/lisp/org-attach.el
@@ -241,12 +241,17 @@ the ATTACH_DIR property) their own attachment directory."
"Commit changes to git if `org-attach-directory' is properly initialized.
This checks for the existence of a \".git\" directory in that directory."
(let ((dir (expand-file-name org-attach-directory)))
- (if (file-exists-p (expand-file-name ".git" dir))
- (shell-command
- (concat "(cd " dir "; "
- " git add .; "
- " git ls-files --deleted -z | xargs -0 git rm; "
- " git commit -m 'Synchronized attachments')")))))
+ (when (file-exists-p (expand-file-name ".git" dir))
+ (with-temp-buffer
+ (cd dir)
+ (shell-command "git add .")
+ (shell-command "git ls-files --deleted -z" t)
+ (mapc '(lambda (file)
+ (unless (string= file "")
+ (shell-command
+ (concat "git rm \"" file "\""))))
+ (split-string (buffer-string) ""))
+ (shell-command "git commit -m 'Synchronized attachments'")))))
(defun org-attach-tag (&optional off)
"Turn the autotag on or (if OFF is set) off."