TopGit-0.19
A major TopGit update.
Major new commands include `tg tag` and `tg revert`. When combined,
`tg tag` and `tg revert` can provide a kind of `tg update` undo.
See the new "NO UNDO" section in the README. A new `tg rebase`
command is also included to provide a `git rebase --auto-continue`
functionality. The use of `tg create` has been greatly streamlined
and it learned several new options to specify `.topmsg` content.
Furthermore, TopGit branches with no dependencies (an empty `.topdeps`
file) are now officially supported with the new `tg create` `--no-deps`
option.
New with this release TopGit attempts to keep commits that change
`.topdeps` and/or `.topmsg` separate from other changes. See the
new "SEQUESTRATION" section in the README for details.
The `tg summary` command learned several new options most notably
the `--heads` option which can be combined with `--rdeps` (as
`tg summary --rdeps --heads`).
The `tg` command learned to accept `-c <name>=<value>` options to
be passed through to any git commands that are run.
The `tg delete` command learned to detach your HEAD (thereby allowing
deletion of the HEAD branch) with `-f -f`.
The `tg info` command learned a new `--heads` option to tell which
of the `tg summary --heads` the specified branch is contained in.
The `tg update` command learned `--stash` and `--no-stash` and to
pay attention to the config value of `topgit.autostash` (see the
new "NO UNDO" section in the README for details).
The `tg checkout` command implicitly understands to 'goto' when
the word 'goto' is omitted and the argument is not another subcommand.
SHELL_PATH can now be set in `config.mak` to specify a POSIX shell
other than /bin/sh to use with the installed tg commands.
The README has been expanded somewhat and now contains an alphabetical
list of all subcommands in the USAGE section which become links
when the `topgit.html` file is generated. Furthermore, the non-html
version used for `tg help tg` now contains the same usage lines the
html version does. A new "CONVENTIONS" section is also included
to explain the three different kinds of TopGit branches commonly
used ("patch", "base" and "stage").
Various bug fixes are included. `tg export --linearize` will no
longer abort prematurely when faced with branches that do not share
a common base somewhere in their ancestry. Pre-existing pre-commit
hooks are no longer assumed to use `#!/bin/sh` as their interpreter.
When output is not being paged an extra `cat` process is no longer
run.
A regression (since 0.18) and bug fix (when using older bash) for
the pre-commit hook are included.
A Git compatibility update to set LESS to '-FRX' instead of '-FRSX'
to match Git behavior since v2.1.0 is also included.
Kyle J. McKay (94):
tg.sh: next version is 0.18.1
tg-tag.sh: new TopGit "tag" command
tg.sh: avoid merge setup when unnecessary
tg.sh: add support for recurse_deps_exclude
tg-tag.sh: speed up tagging of multiple branches
tg-tag.sh: complain with --all and no TopGit branches
tg-tag.sh: use unambiguous ref abbreviation in --reflog output
tg-tag.sh: colorize reflog output
tg-tag.sh: support new options --reflog-message and --no-type
tg-tag.sh: improve reflog messages
tg-tag.sh: default to --reflog-msg --stash for --reflog with no tag
tg.sh: set LESS to -FRX by default instead of -FRSX
tg-rebase.sh: new TopGit rebase command
tg.sh: allow -c <name>=<value> options to be passed to git
pre-commit.sh: use fully-qualified ref with ref_exists
pre-commit.sh: exit on error even with older bash
tg-export.sh: do not abort --linearize early
tg.sh: move run_editor into tg.sh so it can be reused
README: correct some awkward grammar
Makefile: allow SHELL_PATH to specify the POSIX shell
tg: avoid shift when $# -eq 0
tg.sh: do not assume a pre-existing pre-commit hook uses #!/bin/sh
tg-tag.sh: use configured hash abbreviation length
tg-tag.sh: add some DWIM parsing <tagname>
tg*.sh: disambiguate git rev-parse arguments
tg-tag.sh: support --quiet (aka -q) option
tg-revert: new tg revert command
tg-create: support new options and behavior
tg-create.sh: implement new options and semantics
tg.sh: set up tgnosequester in initial_setup
tg-import.sh: overhaul to allow continuing and support new tg create
tg.sh: move nullsha definition into tg.sh for reusability
tg-depend.sh: reformat dependency add message
hooks/pre-commit.sh: overhaul and sequester TopGit files
tg: refactor paging functions to eliminate "cat" process
tg: avoid unnecessary setup for strftime function
tg-summary: add --deps-only option
tg-update.sh: --all is now an alias for -a
tg: make sure we're really working with commits
tg-create.sh: support new --no-deps option
tg.sh: add err function
tg-checkout.sh: make "goto" optional
README: add command summary list with links
tg-create.sh: switch from warn to err
tg-create.sh: ensure_clean_tree for non-remote setup
tg.sh: fix recurse_deps pre-order traversal with remotes enabled
tg-update.sh: eliminate two unnecessary uses of cut
tg: improve merge messages
Makefile: add install-doc target
tg-summary.sh: support new --heads option
tg: include usage lines in `tg help tg` output
tg-summary.sh: support --tgish-only for parity
tg-create.sh: support --topmsg and --topmsg-file options
tg: stop symbolic-ref whining
tg-revert.sh: quiet auto-stash error when no TopGit branches exist
tg-revert.sh: properly handle nested tags
tg-tag.sh: avoid unnecessary consolidation commit
tg-tag.sh: make --walk-reflogs be alias for -g
tg-push.sh: handle explicit HEAD argument better
tg-info.sh: support new --heads option
README: mention using tg tag + tg revert to transfer TopGit branches
tg-update.sh: add autostash support
tg-create.sh: relax --no-deps checking
tg-delete.sh: double -f will delete your HEAD
tg-create.sh: support --quiet option
tg: check result codes from tg create and git commit
tg-tag.sh: accept --commit-message as alias for --no-reflog-message
tg-create.sh: maybe allow non-clean tree
tg-create.sh: allow HEAD as an alias for HEAD's symref
README: explicitly mention utility of tg summary --rdeps --heads
tg-summary.sh: support --with-deps option
README: add SEQUESTRATION section detailing new behavior
tg-tag.sh: guarantee a reflog for refs/tgstash
README: add section about rewriting commits
README: add a "NO UNDO" section
tg-create.sh: use [BASE] instead of [PATCH] for --no-deps
tg.sh: make -f option to verify_topgit_branch truly silent
README: add "CONVENTIONS" section
tg.sh: next version is 0.19
tg-revert.sh: guarantee a reflog for refs/tgstash
tg-tag.sh: robustify [;_)] out-of-date ref handling
tg-tag.sh: restore speed after robustification [;_)]
tg-tag.sh: implement --drop, --clear and --delete options
tg-tag.sh: allow non-symbolic refs to influence parents
tg-create.sh: refuse to create a branch named after a tag
tg-depend.sh: work properly in unclean tree
tg: always use refs/heads/$name when $name is a TopGit branch
tg-create.sh: use ensure_clean_tree only when absolutely necessary
tg-create.sh: with --no-deps work on unborn branch
README: add minor updates and clarifications
README: add "SPEED AND CACHING" section
tg-depend.sh: new options and better dirty worktree support
tg-update.sh: do not stash on recursive invocations
tg-stash.sh: use correct tag stash branch name
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQPcBAABAgAGBQJWT4sOAAoJEFh5SEJa2uvTAuMd/juXOVrHaUptYzGANOgxpIYj
jho8VD682JImpoDG+z9Bgp3t2uopKVJePr802wIl+Id02CFHy3u8XhPiLavi/48n
5S+KXMjRXFQQxHTSRyF77vMHKXq5wXzA0R862IgKo12v3Bh25SlntKqZK6gkj2yU
5rwf6KuOJ5B0lm3Bq6SsyY4BISCSvqWFl4uzBr1ULJRyXLcgZWnx0VgtWEs302Y2
kYplxljS91Ahyb4dFPKQBMu2OfHij+pdR6PXM6T4cMfjS6vku4yMKe+lYCnbn8JO
MPrXabP1FaRVRNL4RwwU+kx2Oy+sZ+cYbSA+k90FFQ4e4V/zqBTnjl+XVSGE6ZMx
fGhXnhN2o9gfrI92sjmLxUh+l9wr1sCylXaxCTukXxhXShm9HAxtNu8nODf7DhxQ
I8JKMGGHcdNkAQuVtuMvMCF/Ys6eL1BrfUR6z9Cawev86Zh9pFnM4JBXFgmNPljQ
xXwKIJvz90N4Jq2OtrlzIrVYMgFi7fIqSws3uWSjxmebaF11SGXGzVDdn42x1SeN
3Eb6cPVOxUPMMdR6C+c+IWzjL2BDQvJTsLP0BmrpK8tigJoAK4hY5326NWsKuORk
ijAxbmqCoYd1AJ/Jn2b/r8LPkV4rBc1X6Ep4qgqek6m1gAr2MuHtD6EXOEBsd8YK
i6om3ZALHip0Hah4i3g1Qx3MFvP8pb/8CefnMFjo7MF+qfn17JpZsgOVxTKNme1D
uNbg32rcGQjbNGsJ5fPJKXqEEc2LsbkCpoLxafJvfU13hSSxcotVGjetw+krwq8Y
WKI8yWbVk7kEKELtZ+H2XQishi13txE/FpNSslu6bboZ/m7lqORLRrqrmW5Ex8jj
hnxzdQeiFQEzRcsfJX3ELSSVhk8RKE4NgCGohduTv+d70MmofAz4fFW0qb5wotSn
OgkJDCbTs+8FkiAcDdrVqPA9gPROqv9HSW0IbtMct/y1M0m0eotkd1HXBrLVRZi9
xdBuYZBct1/Bl7kRf/dl9B6gYUwmuO9DvDhULNf21+8ZzH5tUOdb6BB2sr03gmj8
+8YQdJZaCD7H+gcoQlgZQ4LIv61MCabt7xN7kigScgUWd6slt+CWZ/8XqUZyEZ6U
tjh2QkzDr+g6SFC9wEaWd4ZArAFbcJjO3r4lEskZIsT7N+HAeU2RMVQ+UkI5jHVv
TptCu4uxNh4vI/J5coWLpzmOgtzO3jY3wz8ITyZgPveNE6HuBWzT0WmKOvC8nPYt
LxArtPzvbmhXXIZes5DZafc5efJX6/z18KIWSbA93A==
=21EI
-----END PGP SIGNATURE-----