Commit Briefs

d1e03b8cc3 Thomas Adam

replace "(cd path && git cmd)" with "git -C path cmd"

This matches the existing use of "got -r path cmd" and "git_commit path args".


aaf972e236 Thomas Adam

actually detect modified files when checking out with -E

When checking out over a pre-existing directory tree with -E, got would store the checkout timestamp in the fileindex and so not detect local edits until those files are touch(1)ed again. Instead, detect that a file already exists during checkout and don't update its {c,m}time, leaving them to zero (the epoch), so a subsequent `got status' will look at its contents. While here, change the status char for such file from ? to E, which is what the manpage actually documents. Issue reported by naddy@ ok stsp@


484d974bd6 Thomas Adam

prevent overlapping repo and work tree in 'got checkout'

Some people are eager to try to make Got work just like Git by overlaying the repository and work tree. This causes problems with unveil conflicts at run-time. Fail as early as possible during 'got checkout' when users attempt this. cosmetic tweaks + ok op@


8642913bb1 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@


fb8851205d 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


b091c2cda9 Thomas Adam

got-read-gitconfig: send key-value pairs for extensions

Most extension allow only for a boolean value so the current behaviour of just sending the extension with a trueish value is fine. However, some extensions that we could eventually support (like "objectformat") have a string value. This is a preparatory step towards that. ok stsp@





e0220e748c Thomas Adam

respect resource limit for number of open files when sizing the pack file cache

ok op@


a2c162ebae Thomas Adam

respect umask when creating or changing files and directories

This behaviour is already documented in got-worktree(5) but wasn't actually implemented. ok stsp@


bf3ab20628 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@


fc414659b4 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.


67d7451ca0 Christian Weisgerber

shell code fixes

Escape sequences are not handled by every echo(1), e.g. not on FreeBSD. '?' is a glob character and must be quoted. '!' is not a shell meta character. ok tracey stsp



08e5873e99 Stefan Sperling

make 'got checkout' display the checked out reference and commit ID

ok tracey




20b7abb3fa Stefan Sperling

detect unknown repository format extensions (such as sha256 format)

ok millert


f6cae3ed1e Christian Weisgerber

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

ok stsp


7fb414ae4d 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


4180658719 Stefan Sperling

fix missing 'return 1' in commit.sh test failure cases


b7422a2f5c Stefan Sperling

stop using realpath(3) to resolve a symlink target in install_symlink()

We should not resolve a symlink target path recursively when installing a symlink in the work tree. We want to handle this symlink's target, not the end result of following a chain of symlinks in case such links already exist.