Gitslave Release 2.0.2 2012-01-25 New Features * gits now has --reference support Several gits commands (clone, populate, and attach) have been taught to understand the --reference argument as documented in the git-clone man page. Clone and populate adjust the --reference=/path/to/superrepo argument as normal to provide the correct path to git. Clone and populate also take the --referencecheckout=/path/to/superrepo argument which adjusts the path as if --fromcheckout rules were in effect. The purpose is to allow avoid lengthy network clones if you have the bits stored locally in one form or another. Note that you may wish to `gits repack -a` as documented in the git-clone man page to remove the linkage. * gits attach now supports --adminonly Even though gits attach --reference avoids doing the majority of the network transfers, some users still want to "attach in place" or use an existing git repository which was positioned in the correct location instead of re-cloning the repository. * gits release created to remove temporarily unwanted project repositories Inspired by cvs release, provide a mechanism to delete on-disk repositories that are not wanted. Often used with --just-ifpresent Tries to be safe by checking for several classes of pending changes but deleting stuff is always risky. Note that this does not detach the slave repositories from the superproject. * gits now understands --rawout Rawout asks for gitslave to not go though output summarization ("On repo" and leading spaces) for most gitslave commands. Note that the output may currently not be in the same repository order as it was originally. Implies --no-hide. Often used for post-processing output. * Limited windows support Multiple users have been successful in using gitslave with Windows. This is "supported" only in the sense that people have reported it to work and we accept bugfixes, not that you can `make` install or check, or that it is QAed on this platform prior to release. Features or Bugs of Minor Note * gits clone now understands "git clone" output from versions 1.7.7.2 or greater. * gits populate now understands --withifpresent * gits clone/populate now recovers from failed fetch during clone. * gits can now understand .gitslave files with DOS style line endings * gits no longer tries to pass -K to less on Windows. * gits now disables paging for subsidiary git commands, just in case. Gitslave Release 2.0.1 2011-03-26 New Features * Now supports git+ssh:// and host:repo style GRLs Traditionally gitslave has only supported /path/to/repo and URL (ssh://host/path/to/repo) style Git Resource Locators. Gitslave has now been taught about the alternate reference styles. * gits now has pager support gits will use less, $PAGER, and $GIT_PAGER hopefully similar to how native git uses pagers for output. * gits will not clean directories with .git in them Replicating recent git functionality, `gits clean -dfx` will not destroy repositories. This helps the situation where different branches have different slave modules attached. Features or Bugs of Minor Note * gits prepare/clone can now work under an existing gitslave tree Instead of behaving potentially unexpectedly if you are attempting to `gits prepare` or clone instead a directory which is already under a gitslave tree, throw a fatal error (with a way to work around this problem if you really really want to `gits prepare` (or clone) a newly created recursive subproject or something like that. * gits logs now understands the --date option gits logs tries to summarized commits across all repositories and aggregate commits about the same topic in multiple repositories. This aggressive aggregation means that many log options are not support. --date is no longer within that group. * Provide progress support for gits fetch If you have Term::ProgressBar loaded, certain operations which are sometimes long will by default provide progress indicators. Fetch is now within that group. * gits populate/checkout will now try to auto-create target branch If you are on an alternate branch when you attempt to populate or checkout which will cause a new repository to be checked out into the superproject, gitslave will now attempt to create a tracking branch from upstream if it does not exist. * Support git client versions back to 1.5.x Through a lack of old git installations to test on, older git versions had accidentally become broken. Support has been resurrected, but we still don't test as a matter of course with back-rev'd git installations, so a `make check` might be a good idea. * Protect against git color.ui always Git colorization can sometimes confuse gitslave when it parses git output. Protect against one detected occurrence. * Protect against subprojects with spaces in the name This is not full quote protection against arbitrary characters, but the possibly more common case should be handled better. ---------------------------------------------------------------------- Gitslave Release 2.0 2011-03-01 New Features * Recursive subprojects With the use of `gits attach --recursive=.gitslave URL DIRECTORY` gitslave now fully support recursive subprojects (or slaves which are themselves gitslave masters of yet more slaves). * gitslave tutorial created A tutorial was created which walks the reader through a from-scratch repository creation using the most popular and needed git commands in the multi-repository gitslave environment. The tutorial and overall gitslave website is now stored as part of gitslave. * gits pulls more efficient and safer. Gits pulls perform a pull on all available local branches. This now should perform only one fetch (in most cases). Also --rebase is safer by using --preserve-merges (in most cases). * gits now implements paginated output by default, just like git Pagination is only enabled if standard output is a tty (and there is a controlling tty for the pager to take input from). If you do not want paginated output, the -n or --no-pager option disables it. All the git pager configuration settings (GIT_PAGER and PAGER environment variables, and core.pager configuration setting) are honored. * gits populate can now request population of specific ifpresent modules Important Bugs Squashed * Gitslave now supportes .gitignore management when adding a slave in a deep directory (gits attach ../foo plugins/foo). * Gitslave generated .gitignore entries are now more precise. * Gitslave no longer assumes we cloned onto the master branch. * Gitslave support --fromcheckout with gits clone. * Gitslave users can now decline hooks management (--nohooks) Critical Upgrade Notes * The old saved setting of --fromcheckout has been forgotten. There is a new configuration setting in town which will not cause confusion when `gits remotes` are used and some remotes have --fromcheckout and others are not. This would only be important if someone attached a new repository and people needing --fromcheckout did a `gits populate`--in other words pretty unlikely. Workaround, gits update-remote-url --fromcheckout . * Legacy gitslave added .gitignore values cannot be removed when subproject removed by detach. The legacy gitslave entries in .gitignore were nonspecific (e.g. ) so could match undesired files/directories elsewhere. Gitslave now uses specific anchored entries (e.g. /directoryname/), but no method is provided to convert them. This would only be important if someone detached an old repository and then replaced it with an embedded directory. Workaround, make the entries specific (/directoryname/) or manually delete them as needed. Features or Bugs of Minor Note * Gits resolve now takes optional "remote" name * Gits update-remote-url now works with --no-master and some --exclude arguments. * Gitslave prints "(last repository path component)" instead of "." for the top level repository. * Gitslave now summarizes branch mismatch warnings. * gits -v provides full output, -vv provides commands execute, -vvvv provide command status and output. * Summarize last message "On:" header if there are many many entries. * Gitslave correctly handles directory paths with whitespace in them, and will not execute commands in the wrong directory if it cannot chdir ---------------------------------------------------------------------- 2011-02-04 Seth Robertson * 1.3 release * #include support in .gitslave files * gits attach failure detection * gits --no-hide to prevent hiding of SHAs * Contributed .spec file 2010-12-17 Seth Robertson * Support flags in gits attach (specifically ifpresent). * Actually support documented --with-ifpresent argument. * Update man page command line flags 2010-12-17 Seth Robertson * Version 1.2 released * Add `gits clone` support for easier project initialization. * Add `gits detach ` support for easier removal of subprojects. * Change the default quoting style to fully quote all arguments. Previously, the '$' and '`' characters were not quoted. * Add --eval-args to restore the old-style quoting rules. 2010-10-28 Seth Robertson * Version 1.1.1 released * Deduplicate output summarizing code. Provide standard mechanism to suppress (and show) empty command output. 2010-10-27 Seth Robertson * Version 1.1.0 released * Add support for `gits remote add` to add new remotes for all slaves with the correct relative remote URLs. * Add support for `gits archive` to generate a unified tarball with slave-relative paths. * Full (and documented) support for command substitution to allow gits-archive, gits-exec, gits-bundle and friends to have output files contain repository specific tokens. 2010-09-20 Seth Robertson * Public 1.0 release