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 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))
reply other threads:[~2021-01-31 19:38 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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://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 \ /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
Org-mode mailing list This inbox may be cloned and mirrored by anyone: git clone --mirror https://orgmode.org/list/0 list/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 list list/ https://orgmode.org/list \ emacs-orgmode@gnu.org public-inbox-index list Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.yhetil.org/yhetil.emacs.orgmode nntp://news.gmane.io/gmane.emacs.orgmode AGPL code for this site: git clone https://public-inbox.org/public-inbox.git