only fetch the work tree's branch by default if it is inside "refs/heads/" ok jamsek

got: use intermediate pointers to plug leak on realloc And save worktree_branch_len for reuse. ok stsp@ and op@

nix unnecessary colon in gotd log output ok op@

fix interaction of 'got fetch -b', got.conf, and work tree Without branches in got.conf for a remote, and without -b/-R options, the fallback to HEAD would only work when not invoked in a work tree. With this fix 'got fetch' should behave as described in the man page. The -b option now overrides both got.conf and the fallback to the work tree's branch. And fallback to HEAD works as expected when invoked in a repository. Also, do not strictly require remote repositories to provide a branch from the refs/heads/ namespace. In such cases users should be able to use -R to select something to fetch. ok jamsek

hide unexpected diff output from xfail test

add xfail test for 'got status' ignore patterns with a trailing slash Patch by Lucas

make 'got import' -I option match directory names with a trailing slash reported by Lucas on IRC, who sent a patch which this commit was based on ok jamsek

fix gotd build Add missing srcs and update got_repo_read_gitconfig() to be consistent with recent changes. ok stsp@

improve 'got fetch' behaviour when work tree's branch is not on server Only fetch the work tree's branch if the -b option is not specified. This keeps -b functional as an override when invoked in a work tree. Our previous changes did not consider that got.conf is also a source of lists of branches to fetch, and that -b is supposed to work as an override of any default behaviour. We were implicitly appending the work tree's branch as if it was mentioned as an override on the command line, which was wrong and based on a misunderstanding of the intended behaviour. Without -b on the command line we obtain a list of branches to fetch from got.conf and use this list if it is not empty. The repository's HEAD will be fetched only if neither the -b option, nor got.conf, nor a work tree tell us what to fetch. Make the man page more clear by moving the explanation of the default behaviour into the main section of 'got fetch', leaving the -a and -b option descriptions free of such details. ok jamsek

move comment it describes bump_base_commit_id_everywhere, not its per-entry callback bump_base_commit_id.

zap double empty line


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@

replace got_repo_get_gitconfig_extensions with got_repo_has_extension got_repo_get_gitconfig_extensions is only used in gotadmin to check if the preciousObjects extension is active; let's replace it with a function that just checks whether a certain extension is active. It simplifies future changes to the extensions handling. ok stsp@

fix building of few regress after got_object_id_hex was introduced and used in error.c, the building of delta, deltify and path failed due to missing symbols. Spotted by stsp and tracey, ok stsp

got_object_open: copy whole id not just the sha1 ok stsp@

introduce got_error_checksum ok stsp@

introduce got_object_id_hex to replace some got_sha1_digest_to_str() It's an analogous to got_object_id_str but writes to the given buffer. ok + improvements by stsp@

rename a function for clarity

add a TODO item regarding missing client-side pack content verification

typo and style(9): do not use function calls in initialisers. ok stsp@

fix mistaken instances returning NULL instead of err While here, for consistency, check dup() return value for -1 rather than < 0. ok stsp@

fix missed doc update of new 'got fetch' behaviour ok stsp@

delete unused code serializes an id to a local buffer before before returning. ok stsp