Emacs Lisp to automatically add, commit, and push when files change
;; Automatically add, commit, and push when files change. | |
(defvar autocommit-dir-set '() | |
"Set of directories for which there is a pending timer job") | |
(defun autocommit-schedule-commit (dn) | |
"Schedule an autocommit (and push) if one is not already scheduled for the given dir." | |
(if (null (member dn autocommit-dir-set)) | |
(progn | |
(run-with-idle-timer | |
10 nil | |
(lambda (dn) | |
(setq autocommit-dir-set (remove dn autocommit-dir-set)) | |
(message (concat "Committing org files in " dn)) | |
(shell-command (concat "cd " dn " && git commit -m 'Updated org files.'")) | |
(shell-command (concat "cd " dn " && git push & /usr/bin/true"))) | |
dn) | |
(setq autocommit-dir-set (cons dn autocommit-dir-set))))) | |
(defun autocommit-after-save-hook () | |
"After-save-hook to 'git add' the modified file and schedule a commit and push in the idle loop." | |
(let ((fn (buffer-file-name))) | |
(message "git adding %s" fn) | |
(shell-command (concat "git add " fn)) | |
(autocommit-schedule-commit (file-name-directory fn)))) | |
(defun autocommit-setup-save-hook () | |
"Set up the autocommit save hook for the current file." | |
(interactive) | |
(message "Set up autocommit save hook for this buffer.") | |
(add-hook 'after-save-hook 'autocommit-after-save-hook nil t)) |
This comment has been minimized.
This comment has been minimized.
Since the goal seems similar, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
neato... how can i setup the save-hook on a directory everytime i open a file inside one?