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. Seetg 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:
tg goto
is an implicit alias fortg checkout goto
, but only if no
topgit.alias.goto
has been explicitly configured.- Both
tg export
andtg import
accept a new--notes
option. - 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