diff --git a/lisp/org-attach-git.el b/lisp/org-attach-git.el index 2091cbc61..54df5b9ba 100644 --- a/lisp/org-attach-git.el +++ b/lisp/org-attach-git.el @@ -52,9 +52,26 @@ If \\='ask, prompt using `y-or-n-p'. If t, always get. If nil, never get." (const :tag "always get from annex if necessary" t) (const :tag "never get from annex" nil))) +(defcustom org-attach-git-dir 'default + "The attachment directory where a Git repository must be +handled. The default value is `default', which is equivalent to +`org-attach-id-dir'. If the value is `individual-repository', it +means that the directory attached to the current node should be +handled as a individual repository, as long as it has been +conveniently initialized." + :group 'org-attach + :package-version '(Org . "9.0") + :version "26.1" + :type '(choice + (const :tag "Default" default) + (const :tag "Individual repository" individual-repository))) + (defun org-attach-git-use-annex () "Return non-nil if git annex can be used." - (let ((git-dir (vc-git-root (expand-file-name org-attach-id-dir)))) + (let ((git-dir (vc-git-root (cond ((eq org-attach-git-dir 'default) + (expand-file-name org-attach-id-dir)) + ((eq org-attach-git-dir 'individual-repository) + (org-attach-dir)))))) (and org-attach-git-annex-cutoff (or (file-exists-p (expand-file-name "annex" git-dir)) (file-exists-p (expand-file-name ".git/annex" git-dir)))))) @@ -62,7 +79,10 @@ If \\='ask, prompt using `y-or-n-p'. If t, always get. If nil, never get." (defun org-attach-git-annex-get-maybe (path) "Call git annex get PATH (via shell) if using git annex. Signals an error if the file content is not available and it was not retrieved." - (let* ((default-directory (expand-file-name org-attach-id-dir)) + (let* ((default-directory (cond ((eq org-attach-git-dir 'default) + (expand-file-name org-attach-id-dir)) + ((eq org-attach-git-dir 'individual-repository) + (org-attach-dir)))) (path-relative (file-relative-name path))) (when (and (org-attach-git-use-annex) (not @@ -86,7 +106,10 @@ This checks for the existence of a \".git\" directory in that directory. Takes an unused optional argument for the sake of being compatible with hook `org-attach-after-change-hook'." - (let* ((dir (expand-file-name org-attach-id-dir)) + (let* ((dir (cond ((eq org-attach-git-dir 'default) + (expand-file-name org-attach-id-dir)) + ((eq org-attach-git-dir 'individual-repository) + (org-attach-dir)))) (git-dir (vc-git-root dir)) (use-annex (org-attach-git-use-annex)) (changes 0))