From: "Juan Manuel Macías" <maciaschain@posteo.net> To: orgmode <emacs-orgmode@gnu.org> Cc: Ihor Radchenko <yantar92@gmail.com> Subject: [patch] to allow org-attach-git to handle individual repositories Date: Sun, 31 Jan 2021 20:37:27 +0100 [thread overview] Message-ID: <87y2g8rj7s.fsf@posteo.net> (raw) [-- Attachment #1: Type: text/plain, Size: 589 bytes --] Hi, I would like to propose and discuss this patch for org-attach-git, following a series of comments and suggestions from Ihor Radchenko in this thread: https://lists.gnu.org/archive/html/emacs-orgmode/2021-01/msg00483.html This patch would allow org-attach-git to handle individual repositories, that is, any repository initialized in a directory attached to a node. A custom variable is provided, that admits two values: 1. default: the default value, which is equivalent to the old behavior 2. individual-repository: which activates the 'new' feature. Best regards, Juan Manuel [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: org-attach-git-individual-repositories.patch --] [-- Type: text/x-patch, Size: 2664 bytes --] 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))
next reply other threads:[~2021-01-31 19:38 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-31 19:37 Juan Manuel Macías [this message] 2021-04-28 3:57 ` Bastien 2021-04-28 13:42 ` Juan Manuel Macías 2021-05-15 14:08 ` Bastien
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=87y2g8rj7s.fsf@posteo.net \ --to=maciaschain@posteo.net \ --cc=emacs-orgmode@gnu.org \ --cc=yantar92@gmail.com \ --subject='Re: [patch] to allow org-attach-git to handle individual repositories' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).