# -*- mode: org -*- * v3.3.2 UNRELEASED * v3.3.1 2022-02-16 - ~borg-user-emacs-directory~ wasn't used in all places where it should be used. - Added new function ~borg-dronep~. - Added new macro ~borg-do-drones~, which is mostly like ~dolist~ but caches variables that are set in ".gitmodules". - Added new make target ~build-native~. - Like manual in the top directory, those in the ~doc/~ and ~docs/~ directories are now also automatically build and added to ~Info-directory-list~. - Added an additional make variable ~EMACS_ARGUMENTS~ that is reserved for use by users. * v3.3.0 2022-01-01 - When setting ~borg-top-level-directory~ do not assume we are inside a Git repository, which makes it possible to use Borg to build a static configuration to be deployed outside the repository used to build it. #110 - Fixed path to ~etc/borg/config.mk~, which is now also loaded when building not-interactively. - Added new variable ~borg-compile-function~, which can be set to ~native-compile~ to enable upfront native compilation. This should be done in ~~/.emacs.d/etc/borg/config.el~ like so: #+begin_src emacs-lisp (when (native-comp-available-p) (setq borg-compile-function #'native-compile)) #+end_src Renamed ~borg-byte-compile-recursively~ to ~borg-compile-recursively~ and ~borg-byte-compile~ to ~borg-compile~ accordingly. #116 - ~borg-drones~ learned to ignore non-drone submodules. #117 - The ~variable~ argument of ~borg-get~ can now be a symbol. - If a variable has multiple values ~borg-get~ failed to return the last value when using the cache, as it already did when not using the cache. * v3.2.0 2021-05-30 - Taught ~borg-load-path~ to use the ~elisp/~ directory automatically like it already uses the ~lisp/~ directory or the top-level. The ~elisp/~ directory takes precedence over the other two directories. a8bce40 - Users can now specify the init files that should be compiled by setting the ~INIT_FILES~ variable in the top-level ~Makefile~. If that is not specified, then the same files as before are compiled (~init.el~ and ~.el~). 35b63df - Each init file is now loaded before it is compiled. Previously this was only done for ~init.el~. f6a2e0c - The ~default-directory~ used during compilation and when presenting the results did not always match, leading to broken links. 41b4494 - When initializing and rebuilding packages, then missing and disabled packages are skipped now. bde5d4c, 93f40f9, 640169d - It is now possible to place the drones in a directory that is named something other than ~lib~ using the ~borg.drones-directory~ variable. The default is still ~lib~, except when using Borg alongside Package; then the new default is ~borg~. 83f96dd, fd31cff - The ~borg-user-emacs-directory~ no longer has to be the top-level directory of the containing repository. bbea37f - The variable ~borg-drones-directory~ was previously known as ~borg-drone-directory~. dd0c142 - When Borg is used as secondary package manager, then ~borg.mk~ is now usable as well. 5d87d34 - Added documentation on how to recover from missing commits and missing repositories. ecb2f9f - Symlinks are resolved now when setting path variables. 444b9d7 * v3.1.2 2019-12-05 - The new option ~borg-rewrite-urls-alist~ allows rewriting certain urls when a package repository is cloned. This is mostly intended to replace Github and Gitlab ssh URLs with https urls. * v3.1.1 2019-05-05 - Cosmetics and improvements to maintenance tools. * v3.1.0 2019-01-28 - The new user configuration file ~~/.emacs.d/etc/borg/init.el~ is loaded by ~borg-initialize~ if Emacs is running without an interactive terminal. * v3.0.0 2018-10-31 - Borg can now be used as a secondary package manager alongside ~package.el~. When used like this, then Borg itself should be installed from Melpa. This is still experimental. For instructions and help see https://github.com/emacscollective/borg/issues/46. The manual does not yet cover this topic. - The commands ~borg-assimilate~ and ~borg-clone~ now require the user to confirm before acting on a package that is known to be (potentially) unsafe. Note that this does not imply that other packages are safe, and also that the ~epkg~ package has to be available for this to kick in for the most dangerous packages — those from the Emacswiki, into which anyone could trivially inject malicious code. - The new files ~borg.mk~ and ~borg.sh~ were added, replacing files that were previously located directly in the super-repository. The super-repository still contains a ~Makefile~, which users who do not use the Emacs.g collective have to update manually, but failure to do so should be less problematic now, because this file only defines a single target needed to make ~borg.mk~ and ~borg.sh~ accessible during bootstrap, while using these files for everything it previously did itself. This makes it easier and safer to improve the respective functionality iteratively and to create configurations that are not based on the Emacs.d collective. - The new user configuration files ~~/.emacs.d/etc/borg/config.el~ and ~~/.emacs.d/etc/borg/config.mk~ are loaded by ~borg-build~ and ~make~ if they exist. These files are primarily intended to set the variables ~borg-emacs-argument~ (which see) and ~EMACS_ARGUMENTS~. The latter can also be used to set ~EMACS~ and/or to define new make targets. - The new command ~borg-insert-update-message~ inserts information about drones that are updated in the index. The inserted text is formatted according to the commit message conventions documented in the manual. In ~git-commit-mode-map~ ~C-c C-b~ is bound to this command. - A new make target ~tangle-init~ was added which recreates ~init.el~ from ~init.org~. - Added new variables ~submodule.DRONE.recursive-byte-compile~ and ~borg-byte-compile-recursively~. - The user is asked to save relevant buffers before compiling. - The values of ~submodule.DRONE.no-byte-compile~ are now treated as relative to the top-level. The documentation already claimed that was the case before. - All build output is appended to the same buffer now. Previously each build created a new, unspecialized buffer that never got cleaned up. The buffer is automatically shown on every build but can easily be buried using ~C-q~. - The command ~borg-insert-update-message~ now also handles assimilations and removals. * v2.0.0 2017-09-19 - Added new command ~borg-clone~ to make it easier to review a package before assimilating it. Assimilating a package gives that package a change to run arbitrary code, so the review should happen first. Packages that have been cloned are now being referred to as clones. If they have additionally been assimilated, then they are referred to as drones, as before. Note that drones are also clones. When a package has not even been cloned yet, then it is referred to as just a package. - Added new command ~borg-remove~ to replace ~borg-uninstall~. The new name is more appropriate because this command is also suitable for removing a package that has previously been cloned, without also being assimilated. This command moves the working tree to the trash, but does not remove the gitdir. It also refuses to do anything if the working tree isn't clean. - Command ~borg-assimilate~ now assimilates an already cloned package without the user having to use a prefix argument, while separating the gitdir from the working tree, if that isn't already the case. The latter is useful after the user initialized a new repository, or cloned a package using something other than ~borg-clone~. When assimilating a package, that has been cloned or assimilated before but was then removed again, then the user is now given the choice between reusing the existing gitdir or starting over. - Command ~borg-build~ now also activates the clone or drone using the new command ~borg-activate~, which was extracted from ~borg-assimilate~. - Command ~borg-build~ now always uses a non-interactive Emacs instance to avoid polluting the new byte-code with old versions of the same code that is already loaded. - The functions ~borg-update-autoloads~, ~borg-byte-compile~, and ~borg-makeinfo~ can now be used as explicit build steps without having to specify their argument(s). - Added new variable ~borg-build-shell-command~ to give users complete control over how shell command build steps are executed. - Added new utility function ~borg-gitdir~ and, in order to avoid confusion and match Git terminology, renamed ~borg-repository~ to ~borg-worktree~. - Added new utility functions ~borg-read-package~, ~borg-read-clone~, and ~borg-clones~. - Fixed a type error in ~borg-initialized~ when drones are being skipped. * v1.0.0 2016-12-31 - Repository moved to https://github.com/emacscollective/borg. - The ~~/.emacs.d/bin/borg-bootstrap~ script can now add additional remotes. That script is part of the repository of the ~emacs.g~ collective. It cannot be part of the ~borg~ repository, because it is has to be available before the ~borg~ repository and all the other drone/submodule repositories are cloned. But the documentation about this script can be found in the ~borg~ manual. - ~borg-initialize~ now uses a cache to avoid calling ~git config~ excessively. On Windows this significantly improves performance. - ~borg-drones~ learned to optionally return drone variables instead of just the drone names. - ~borg-byte-compile~ and ~borg-update-autoloads~ now don't require the PATH argument. - ~borg-uninstall~ was broken. - The manual was updated heavily. - Cosmetic and other minor improvements. - Minor bug fixes and typo fixes. * v0.2.0 2016-11-05 - Repository moved to https://gitlab.com/emacscollective/borg. - Updated manual and made source compatible with Org v9.0. - Improved and extended ~make~ targets. * v0.1.6 2016-10-08 - Updated homepage link. * v0.1.5 2016-09-27 - Typo fixes. * v0.1.4 2016-09-27 - When invoked as a command ~borg-build~ failed. * v0.1.3 2016-09-01 - Added new function ~borg-batch-rebuild-init~ to allow compiling just the init files without also compiling all drones. * v0.1.2 2016-08-27 - ~borg-batch-rebuild~ now also compiles the secondary init file ~.el~ if present. - ~borg-batch-rebuild~ now compiles ~org~ before all other packages. * v0.1.1 2016-05-18 - ~borg-build~ did not respect ~submodule..build-step~. * v0.1.0 2016-05-17 - First release.