branch: master commit cc7a8a652b60b62363c2fb2760da543fcd6c71e1 Author: Stefan Monnier <monn...@iro.umontreal.ca> Commit: Stefan Monnier <monn...@iro.umontreal.ca>
* GNUmakefile (.gitignore): New rule (all): Use it. * admin/archive-contents.el (archive-gitignore-externals): New function. * .gitignore: Update. --- .gitignore | 30 ++++++++++++++++-------------- GNUmakefile | 6 +++++- admin/archive-contents.el | 24 ++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 43c9d2b..7f7e600 100644 --- a/.gitignore +++ b/.gitignore @@ -9,23 +9,25 @@ core packages/*/*-autoloads.el packages/*/*-pkg.el -# External packages with their own .git tree. -packages/auctex -packages/chess +# External packages with their own .git tree [autogenerated]. +packages/auctex/ +packages/chess/ packages/dash/ -packages/dismal -packages/ergoemacs-mode -packages/exwm -packages/ntlm +packages/dismal/ +packages/ergoemacs-mode/ +packages/exwm/ +packages/hyperbole/ +packages/let-alist/ +packages/ntlm/ packages/omn-mode/ -packages/pabbrev -packages/python -packages/rudel -packages/soap-client -packages/w3 -packages/xelb +packages/pabbrev/ +packages/python/ +packages/rudel/ +packages/soap-client/ +packages/w3/ +packages/xelb/ # Testing file /archive *.log -*.buildlog \ No newline at end of file +*.buildlog diff --git a/GNUmakefile b/GNUmakefile index d23d523..7d6d100 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -8,7 +8,7 @@ SITE_DIR=site .PHONY: archive-tmp changelogs process-archive archive-full org-fetch clean all do-it -all: all-in-place +all: all-in-place .gitignore CR_EXCEPTIONS=copyright_exceptions .PHONY: check_copyrights @@ -81,6 +81,10 @@ archive-full: archive-tmp org-fetch #mkdir -p archive/admin #cp admin/* archive/admin/ +.gitignore: externals-list + $(EMACS) -l $(CURDIR)/admin/archive-contents.el \ + --eval '(archive-gitignore-externals "$<" "$@")' + # FIXME: Turn it into an `external', which will require adding the notion of # "snapshot" packages. org-fetch: archive-tmp diff --git a/admin/archive-contents.el b/admin/archive-contents.el index 2b1ffec..6f19177 100755 --- a/admin/archive-contents.el +++ b/admin/archive-contents.el @@ -761,5 +761,29 @@ If WITH-CORE is non-nil, it means we manage :core packages as well." (_ (message "Unknown external package kind `%S' for %s" kind name))))))) +;;; Manage .gitignore + +(defun archive-gitignore-externals (elf gf) + (let* ((el (read (find-file-noselect elf))) + (exts (delq nil + (mapcar (lambda (x) + (if (eq :external (nth 1 x)) (car x))) + el))) + (core (delq nil + (mapcar (lambda (x) + (if (eq :core (nth 1 x)) (car x))) + el)))) + (with-current-buffer (find-file-noselect gf) + (goto-char (point-min)) + (when (re-search-forward + "#.*External.*git.*\n\\(packages/[^*/\n]+/?\n\\)+" + nil 'move) + (replace-match "")) + (insert "# External packages with their own .git tree [autogenerated].\n" + (mapconcat (lambda (p) (format "packages/%s/\n" p)) + (sort (append exts core) #'string<) + "")) + (save-buffer)))) + (provide 'archive-contents) ;;; archive-contents.el ends here