topgit-0.19.13
tag0ee3b91b88ec5e48ea007f750537cef5a8ec813b
object 6425af5627413908c5d4b0fc94f4e05c61b6191b
authorKyle J. McKay <mackyle@gmail.com>
Thu, 9 Sep 2021 20:58:47 +0000 (9 13:58 -0700)
TopGit-0.19.13 - Infernally Internal
====================================

_Reminder_

>  TopGit 0.19.4 (2017-02-14) introduced support for a new top-bases location
   under heads.  This new location will become the default as of the TopGit
   0.20.0 release.  The current location under refs will continue to be
   supported in the future.  See `tg help migrate-bases` for more details.

### Basics

A great deal of behind-the-scenes work has been completed in this release.

Core awk functionality now has full test coverage.  Some code refactoring
needed to move forward with some other improvements has been done (and tests
added for it).  There are only a very few end-user visible changes:

 1. `tg goto` is an implicit alias for `tg checkout goto`, but only if no
    `topgit.alias.goto` has been explicitly configured.
 2. Both `tg export` and `tg import` accept a new `--notes` option.
 3. Much of the help has been cleaned up and the text-only versions polished
    to make them more readable and more digestible (there's still plenty of
    room for future improvements though).

### Details

There are several accomodations and updates to handle the idiosyncrasies
of more recent Git versions.  Of particular note, `--object-format=sha256`
repositories (available since Git 2.29.0) are handled properly and all the
tests are automatically run against both the sha1 and sha256 formats when
testing with a version of Git that is version 2.29.0 or later.

There are several bug fixes included in this release.

All users of TopGit are strongly encouraged to update to this release
due to the various bugs that it squashes.

Of particular note is a bug that had been present since 0.19.4 that may have
resulted in a `tg update` finishing but then `tg summary` still showing that
things were out-of-date.  Most often seen when dealing with TopGit remotes.
A second `tg update` did correct the issue and although nothing was actually
incorrectly merged, the bug, when triggered, did cause several unnecessary
merge commits to be entered into the repository's history.

Another corrected bug involves use of branch names that contain characters
with an ASCII value less than 0x2F (`/`).  When certain combinations of
such names were encountered, incorrect operation could have resulted.

Other notable bug fixes are highlighted in the next section.

### Corrections

 *  tg-info: make --leaves "describe" lightweight --tags
 *  t6120-tag-stash.sh: accomodate gpg2
 *  tg--merging.sh: accomodate Git v2.30.0 checkout-index breakage
 *  t/t6100: accomodate git symbolic-ref brokenness since v2.29.0
 *  t/various: introduce git_init function and switch to it
 *  tg-push: make all pushes atomic
 *  tg-contains: correctly match all possible tg remotes with -r
 *  hooks/pre-commit: handle alternate index sequestration
 *  tg-update: exclude .top* files when using --base
 *  t6100: compensate for Git v2.31.0+ reflog brokenness
 *  tg-update: avoid updating remote-removed dependencies

```
Kyle J. McKay (214):
    tg.sh: next version is 0.19.13
    t/.gitattributes: add some binary attributes
    INSTALL: add missing end-of-line
    README: correct typo in ref name
    t/README-TESTLIB: fix five typos and two grammos
    t/README: remove internal 's from sample
    t/README-WRITING-TESTS: correct typo
    test-lib-functions.sh: pass --git-dir for git based test_diff
    topgit_deps.awk: omit self loop lines
    topgit_deps.awk: omit duplicated .topdeps lines
    topgit_deps.awk: clarify and refine exclbr/inclbr operation
    topgit_deps.awk: always remove files when requested
    topgit_deps.awk: omit annihilated self deps
    t1370: test topgit_deps.awk functionality
    tg--awksome.sh: mention ref_match in more require lines
    topgit_recurse.awk: improve operation description
    topgit_recurse.awk: always remove files when requested
    tg-update.sh: correct typo in function comment
    ref_prefixes.awk: minor efficiency
    ref_prepare.awk: minor efficiency
    topgit_branches.awk: minor efficiency
    topgit_msg.awk: minor efficiency
    t0001-sanity.sh: add function word count test
    topgit_recurse.awk: init even with no input
    topgit_recurse.awk: elaborate on functionality
    topgit_recurse.awk: make multib mode ignore dupes
    t0001: add a sanity test for `cat -` just in case
    topgit_recurse.awk: clarify and refine exclbr/inclbr operation
    t1380: test topgit_recurse.awk functionality
    topgit_navigate.awk: correct typos and elaborate
    topgit_navigate.awk: always remove files when requested
    tg--awksome.sh: correct typo in error message
    topgit_navigate.awk: disallow outgoing links from annihilated
    tg-info: make --leaves "describe" lightweight --tags
    topgit_navigate.awk: elaborate and correct text comments
    topgit_navigate.awk: clarify and refine exclbr/inclbr operation
    topgit_navigate.awk: count the step off of nil
    topgit_navigate.awk: roots not always equal to starts
    tg: add implicit topgit.alias.goto="checkout goto"
    ChangeLog: use correct name of smudger in comment
    topgit_navigate.awk: after prune recalculate incoming and outgoing
    t1390: test topgit_navigate.awk functionality
    t0001: advance some awk checks to "expect success"
    Makefile.mak: correct typo in comment
    Makefile: cleanup and polish
    Makefile.mak: mention a few more settings
    create-html.sh: minor nit use double-quotes
    t/Makefile.mak: use TESTLIB_TEST_LINT not TEST_LINT
    check-non-portable-shell.pl: update from Git
    test-lib-main.sh: expunge use of perl
    test-lib-functions.sh: add awk() function redirect
    t/t1200/maketable: replace perl version with awk version
    tg.sh: do not pass arguments to dot command
    tg-update: factor out merging code
    tg.sh: introduce a show-toplevel helper function
    t6120-tag-stash.sh: accomodate gpg2
    README: rename to README_DOCS.rst
    Makefile.mak: improve html generation
    README: add a descriptive Read Me
    README: expand README with example
    check-non-portable-shell.pl: update from Git
    Merge branch 'show-toplevel-helper'
    tg.sh: make .topdeps/.topmsg cache write atomic
    comments: eliminate clumsy grammos
    t/test-lib.sh: correct typo in comment
    test-lib-main.sh: make GIT_PATH test setting actually work
    tg.sh: initialize TRAPEXIT_ to empty
    tg--merging.sh: accomodate Git v2.30.0 checkout-index breakage
    t/t0002: add an explicit test for GIT_CONFIG_PARAMETERS
    t/t2000: add --quiet option to `git init`
    t/t6100: accomodate git symbolic-ref brokenness since v2.29.0
    t/various: introduce git_init function and switch to it
    README: future proof example against Git version 2.28.0 and later
    README: add topgit.top-bases setting to example
    t/README: correct yet more typos
    t/README: quote the TAP regex's and mention they are PCRE
    t/t6100: add more reflog verify-ref tests
    tg-*.txt: improve the readability of the .txt help
    README_DOCS.rst: update git mailing list archive link
    t/test-lib-functions.sh: minor checkbashisms adjustments
    t/test-lib-main.sh: minor checkbashisms adjustments
    README_DOCS.rst: include custom tg tag color config info
    README_DOCS.rst: update synopsis output
    README_DOCS.rst: correct tg tag help for --clear
    Makefile: trivial whitespace change
    awk/ref_match.awk: do not choke on '&' in ref names
    awk/ref_match.awk: always sort refs without trailing '/'
    README_DOCS.rst: correct spelling error
    README-TESTLIB: correct yet another typo
    awk/topgit_navigate.awk: typo be gone
    awk/ref_prepare.awk: grammo be gone
    awk/ref_prefixes.awk: bring comments up to date
    t1301: test special ref name characters with ref_match.awk
    tg*.sh: use git mktree instead of git hash-object -t tree
    README: mention tg push and fuss with docs mention
    README_DOCS.rst: do not split ``code text`` across lines
    t/Makefile.mak: add trap on INT for non-prove aggregate results
    t/test-lib-main.sh: make sure test_auh is correct
    t/test-lib-main.sh: use POSIX for TESTLIB_TEST_PARENT_INT_ON_ERROR
    t/test-lib-{main,functions}.sh: prohibit perl in tests
    test-lib*.sh: remove the last use of PERL_PATH
    test framework: add underpinnings for Git sha256 support
    t0002: update for Git hash algorithm sha256
    test-lib-*.sh: make sure GIT_DEFAULT_HASH gets into the test cache
    t1050: add Git sha256 support
    tg: initial Git sha256 hash algorithm support
    t1200: add support for Git sha256 hash algorithm
    tg: improve Git sha256 hash algorithm support
    t4400: update for Git hash algorithm sha256
    t8100: update for Git hash algorithm sha256
    t8300: compensate for Git sha256 patch-id behavior
    t6120: update for Git hash algorithm sha256
    t6100: update for Git 2.31+ and hash algorithm sha256
    t6100: expunge test_tolerate_failure items
    tg-update.sh: issue more messages when post-update checkout fails
    tg-update.sh: avoid false positive git checkout complaints
    t/t*.sh: do not ignore failures in for loops
    tg-push: make all pushes atomic
    README_DOCS.rst: include hint about gc.rerereResolved
    README_DOCS.rst: use t/release instead of release
    README_DOCS.rst: update URL from http: to https:
    t1060: update rev-parse --git-common-dir test
    tg.sh: accept -P as alternative for --no-pager
    tg-update.sh: correct typo in help
    README_DOCS.rst: mention --paginate and -P options
    README_DOCS.rst: replace man git-config with git help config
    tg-push: pass --follow-tags and --no-follow-tags options to git
    tg-revert.sh: make -h output accessible without tg.sh
    tg-update: keep state in tg-state directory
    t/README-TESTLIB-TG: add missing closing formatting character
    README_DOCS.rst: correct tg update post-update state
    t5060: test tg update --continue functionality
    README_DOCS.rst: add mention of [ROOT] branches
    tg-depend.sh: match tg status terminology
    README_DOCS.rst: use "working directory" terminology
    README_DOCS.rst: add missing punctuation
    tg-{push,revert,summary}: accept --tgish for --tgish-only
    README_DOCS.rst: update tg prev and tg next usage summary
    tg.sh: also unset GIT_OBJECT_DIRECTORY when using -C
    README_DOCS.rst: mention source of tg tag -g date and time
    tg.sh: improve cherry-pick/revert detection
    README_DOCS.rst: update tg import -s docs
    tg.sh: disallow alternate refStorage backends
    tg-migrate-bases.sh: become POSIX compliant
    tg.sh: add fer_branch_contains utility function
    tg-{contains,info}.sh: adopt fer_branch_contains
    t/test-lib-main.sh: remove extraneous line
    t/helper/test_have_prereq.sh: make test_have_prereq available
    Makefile.mak: add test-sha1 and test-sha256 and update test target
    Makefile.sh: sort -u Makefile.dep
    Makefiles: remove __file_which_should_not_exist
    t0002: correct typo in unit test description
    README-TESTLIB-TG: eliminate typo in description
    t4500: test tg contains functionality
    t/helper/git_version.sh: make git_version available
    t/Makefile.mak: show git version being used for tests
    t/test-lib-functions-tg.sh: rectify grammo in description
    t4200/t6120: make tests work with new bases location
    tg-contains.sh: accomodate new bases location
    t4501: test tg contains with multi-level names
    test-lib-tg: grok default --top-bases of tg being tested
    t1020: automatically adapt to tg version >= 0.19.20
    tg-contains: correctly match all possible tg remotes with -r
    tg-info.sh: add a few "sort" filters
    t2031: test sequestration with git commit -a
    hooks/pre-commit: handle alternate index sequestration
    t5001: test tg update --base fast forwards some more
    tg--merging.sh: support --no-commit option
    tg-update: exclude .top* files when using --base
    tg.sh: replace marc.info URL with lore.kernel.org URL
    various: update a few outdated URLs
    tg-*.sh: make sure stripspace uses the correct comment char
    t5002: explicitly test the issue 11 problem
    create-html-usage.pl: improve wrapping and options support
    tg-export: support --notes option
    tg-import: support --notes option
    tg-create.sh: handle @ alias for HEAD with --no-deps
    tg.sh: ensure ensure_clean_tree works on unborn branches
    tg-import: pass --no-deps to tg create when appropriate
    README_DOCS.rst: squash another typo
    topgit.html: generate using a consistent style
    README_DOCS.rst: reword incoherent conventions paragraph
    README_DOCS.rst: add 3-way merge glossary reference
    tg-export.sh: correct fatal wayback message
    README_DOCS.rst: update the out-of-date glossary entry
    README*: minor nits and alternate stub
    README_DOCS.rst: tweak tg tag -g date comments
    tg-tag.sh: discard irrelevant spam when using --drop
    t6100: compensate for Git v2.31.0+ reflog brokenness
    t6101: perform a few more tg tag --drop tests
    tg-tag: do not update ref when dropping @{0} if different
    tg--merging.sh: add single file merge utility function
    t5011: test tg update --skip-missing
    tg-update: do not attempt to merge missing depedency
    t5012: test tg update with remote .topdeps removal
    tg-update: avoid updating remote-removed dependencies
    README_DOCS.rst: expand the update process description
    t5021: test partial fast-forward dependency updates
    tg--merging: use correct first parent when fast-forwarding
    README_DOCS.rst: minor documentation nits
    t2200: add very basic tg depend add multiple tests
    t2300: test tg annihilate including tg update action
    docs: yet another alternate stub
    create-html-usage.pl: fuss with options indentation
    various: use "command" instead of "subcommand"
    tg: clean up generic help output
    tg.sh: handle help -h
    tg: clean up help usage output
    Makefile.sh: use --abbrev=8 instead of --abbrev=4
    tg.sh: adjust use of --create-reflog option
    t6102: test tg tag -g with tabs present
    tg-tag: handle reflog entries with extra tabs
    README_DOCS.rst: wordsmith some of the commentary
    topgit: version 0.19.13

Adam Mizerski (1):
    Update INSTALL
```
-----BEGIN PGP SIGNATURE-----

iQPcBAABAgAGBQJhOnWHAAoJEFh5SEJa2uvTbWMd/R/HgzMoF6O61FnNm3wXhxYL
CSuymaGKfA425+jXLT1f1ueFjq+nbYU0Mbt+FENIEpcthofjy/swO6IbSOyloz9l
mge5xdWPRR3l6XFwSITraFfVjbpvBo614s8UAR+SJ3aV+kynvMnSH/i5Q9nUsCUa
3EAOkqWfymZqzkcm3Lnm5RBnLQA0oSR6ElmYfwrQDbMviaLLQbZBXToUq4hR1SXV
5MomcoWazc2mSYhOzrERry6yfIzRYA52FdlNfldWzwZox8pAWtPYUvQ/vJsSuj8y
FIJ11WiKqEl1Gy0a6Kg0cysSIfy2Hj+rFIYiiLXXM8upbhRE2HGorXRRNI1vBf8f
43TyWa4xEx3QxLBzz+d1SjJ4rCH8zG/t5dkD6lgHI8yB3wCkRHSBtvKwU4gv33ox
oIpmgYAkUQNs/+U64Ov1oMfgWLYfwkqR7A7A0Dp7GE4tNtX0CQ7gscuCV7pqDA82
FohN4lLBbr3BF9nxMxiZUmHDpkNEjMEblZE0wPpyLi+4qpXrgyNEf1KMrGyp+L1t
L+dEArouel3+fgjWvpqRkYR2S1aCkNmZCyaAJhFynj5tJ+6weqNP/1EisBW2soY2
In3hbs/WRLqtQ/ueCs9mCIJ9lY5G0+Vy08whcM1D5GlSscu9ZHMyfgn6AZzzrzi0
W2UFV6St/bj6NTeVuc1XHNBfkh53Lo2E94r9KZfABb66rOKfaEpSJ4eGwae7s1TX
7i/32DK4o4VNannQZMlim94VBpS16/6Ae9G6SvWoOanPG7ah+WAfP4HgG7sP78cI
mjm4PbEUsHdzwa+EQM7Dp3RwuvatirAc9l2Hqhh2E+TLXzixijuMnyaETCt+oOSl
MTbPr2WwZU6/8ZZ0gnGV6soIJMafXNfkpyTJalBY+Td9+rQ05hKHVqhxuhLxNFmu
XTPfXpR307YGG49xdRjeqIhElyW2NJ929Y7J+h4OdR1PyRhRUZ4E3Vz1/3QnasO5
1vDh26J65K9QuPGB3Zun+ZlYX8KPjt3x+Clm97eIthh+3grCWthsVTr3zC5YOHFS
/T4Gp+dD55YP7kJIYMTFmK9+hJPrXM5k7YvfGmC6+QK/HkuCWa7Zi8JtJz3GcqfH
hIv5Sw7WmbInipJpB6nJgG9NFuXSUS+FVKDB1Npag/uf4K4dH36hj+Dpk+GSq69V
OyvJlSnGJt3Jp24rIqePYfPZ7+LagFGMTKP5e4Bw0ys3P/hLL0mOjq/Fu7sZJMqo
9D+/JnW4Z38qQZJ3+KsduyAx+c8cXQQ35Gi21pd0XA==
=Cug4
-----END PGP SIGNATURE-----