Commit Briefs

Thomas Adam

got: regress for log -x keyword and log -dPp combinations

Plus multiple copypasta fixes where I was cmp(1)ing stdout instead of stderr! Fortunately, we were doing the right thing despite not checking it properly. The log -dPp test is from op@. ok + tweaks op@


Thomas Adam

regress: nix 'set -A' kshism from tests

As reported by naddy, this is a non-portable Korn shell construct. Instead, use the one argument array then make faux space-delimited string "arrays" for the other ids; they can still be indexed with pop_idx. improved by + ok naddy@


Thomas Adam

expand support for commit keywords to more got commands

Add the ability to use keywords in the backout, branch, checkout, cherrypick, and patch commands. Includes some basic regress tests for the new commands, and also some more contrived test cases for 'got log -c[:]keyword[:(+|-)[N]]'. ok stsp


Thomas Adam

implement support for keywords as got <commit> arguments

This begins enabling the use of keywords in got wherever commit ids or references are used, with more work intended to expand support across all such instances (e.g., branch, checkout, etc.), and add more keywords. The keywords ":base" and ":head" can be passed to 'got {diff,log,update} -c' commands as a substitute for the corresponding commit hash id. Keywords and references can also be modified by appending a ':+' or ':-' and an optional integer N to specify by first parent traversal the Nth generation descendant or antecedent, respectively. If N is omitted, a '1' is implicitly appended. tweaks + ok op and stsp


Thomas Adam

portable: regress: drop GNU date on *BSDs

Check if date(1) supports -r and fallback to gdate if that fails, via a shell-wrapper. From Christian "naddy" Weisgerber.


Thomas Adam

typo


Thomas Adam

fix diff and log diffstat tests broken in 65dedee0a2cd

I failed to update regress when changing the diffstat summary line in the previous commit to use a singular noun after 1. ok op@ and stsp@


Thomas Adam

regress: replace echo \n with printf and heredoc

echo \n is not really portable. Not that it matters since the regress suite is already using non-POSIX features (like `local'). However, it's the only place using it and easy to fix. ok jamsek


Thomas Adam

add regress for new got log -d switch

ok stsp@


Thomas Adam

fix regression test failures with Git 3.30.5 / 2.38.1 or later installed

The fix for CVE-2022-39253 in Git made our regression tests fail since creating submodules from local clones is no longer allowed by default. Add an override to our invocations of "git submodule add", the same which was added to Git's regression test suite as part of their fix. This CVE doesn't otherwise affect us. We do not implement submodules. Our use of them in regression tests exists only to ensure that Got does not freak out when it sees one. Precisely because automated support for nested repositories and/or working copies (as in Git Submodules, or Subversion Externals, etc.) have been an endless source of security problems in other systems. sudden test failures pointed out by naddy@



Thomas Adam

portable: regress: rework date command for Ubuntu

Don't rely on '-r' for date as it's not consistent across linuxses. Instead, expand the variables required and use '-d'. OK thomas@


Thomas Adam

move 'got init' command to 'gotadmin init'

This functionality is better suited for gotadmin because it is technically a server-side repository operation when we consider the 'got' tool as the client-side tool. I have plans to move 'got import' into gotadmin as well. ok op@


Thomas Adam

always show commit or tree IDs in diff header, in order to help 'got patch'

The idea is that got patch can simply look for a line such as: commit - abcde1234567... to find the merge base commit ID to show in diff3 conflict markers. got log -p now displays commit IDs in its diff header, instead ofl tree or blob IDs. ok op@


Thomas Adam

adjust expected test output after got log -s changes

ok op@


Thomas Adam

add one-line output mode to got log with -s flag

-s for short. Moves log search to -S. Patch by Evan Silberman


Thomas Adam

use test(1) -eq and -ne to compare integers, and reduce quoting

This brings the rest of the regression test scripts in line with patch.sh.


Thomas Adam

display the requested object type when an object could not be found

ok millert@


Christian Weisgerber

add missing "return 1" to failure handling in the regress scripts

ok stsp@




Stefan Sperling

make 'got log' avoid got_repo_map_path() if run in a work tree

ok naddy


Christian Weisgerber

switch function declarations from Korn shell to Bourne/POSIX shell syntax

ok stsp


Stefan Sperling

add a -q option to tests for quiet output and use it for 'make regress'

Previous default output remains when test cases are run individually. ok tracey


Stefan Sperling

make 'got log' -R and -P options work in combination

With -R, the -P option did not show any paths. Regression test added here demonstrates the problem.