Commit Briefs

b90054ed55 Stefan Sperling

use mkstemps(3) instead of mkstemp(3) for opening named temporary files

Allows 'got commit' to use a ".diff" suffix for temporary diff files. ok op@


b2b3fce13e Omar Polo

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@


a6072ec90f Stefan Sperling

handle unlink(2) errors for mergepath, tmppath, and apath in apply_patch()

ok op@


611e5fc207 Mark Jamsek

ensure got patch respects x-bit perms for new files

Reported by stsp on IRC: got patch failed to set the x-bit for a new file despite got diff recording mode 755. Parse got and git diffs for this data and set file modes accordingly. Tweaked with hint from op. ok stsp@


d7c808b798 Omar Polo

locate_hunk: set mangled earlier for clarity

suggested by stsp@; no functional change.



5f56d41e1a Omar Polo

got patch: add -c flag to apply at a specified commit

it's useful for e.g. to apply old patches that weren't generated by `got diff' or git-diff(1) and so lacks the metadata needed for the 3-way merge. manpage improvements from and ok stsp@


615e455c6b Omar Polo

simplify got_patch/apply_patch to call reverse_patch in one place once

Current code is overly complex; it looks if the diff *might* use diff3 merge to postpone reverse_patch until we know for sure. Instead, just reverse_patch in apply_patch once we know if merge *is* used or not.


38d61ead4d Omar Polo

fix `got patch -R' when using diff3 merge

`got patch -R' fails spectacularly when applied on a diff that contains the info of the original blob for the diff3 merge machinery since it tries to apply the reverse of the patch to the old blob. change it to run the patch (_not_ reversed) on the old blob and then swap the arguments to got_diff3_merge which gives us the correct reverse merge of the diff. while here add a test case too. reported by naddy, discussed with and ok stsp@


08f4478902 Omar Polo

use got_privsep_flush_imsg instead of reinventing it

ok stsp@


2c986b8f7e Omar Polo

check for specific chars instead of using isspace(3)

Reminded by naddy and stsp; it was missing a cast to unsigned char to prevent issues on archs with signed chars and was too broad anyway. While here, drop an extra check immediately after. ok stsp@


a92a20426c Omar Polo

got patch: handle mangled whitespaces

This makes 'got patch' try to ignore whitespaces when trying to match a hunk. Discused with and ok stsp@


5dffb1a14a Omar Polo

got patch: don't loose the x bit when merging with diff3

This fixes a regression introduced with the diff3 merge: files merged this way have their permissions resetted after patch. The issue is due the fact that patch_file looks at a temporary files and not at the original "old file". Reported by and ok stsp@


4b752015b5 Stefan Sperling

switch 'tog diff' and 'tog blame' to Myers diff for speed

Make the choice of diff algorithm configurable by diff API users. The got and gotweb programs keep using Patience diffs which are prettier than Myers. But tog should be as fast as possible since it is being used interactively. If performance of Patience diff gets improved later we can consider switching tog back over to it. ok tracey jamsek


eb81bc23c7 Tracey Emery

move got_opentempfd out of open_blob. ok stsp@


db0dfdd7e5 Omar Polo

got patch: handle git-style diffs for the 3-way merge too

tweak and ok stsp@


497a59156b Omar Polo

handle blob ids without corresponding blob ids

ok stsp@


9802c41ca7 Omar Polo

got patch: use status G for merged files (and document it)

Suggested by stsp@. This makes possible to tell if 'got patch' used a merge-base from the repository for the 3-way merge or did a simple search/replace operation. While here update the tests to look for the 'G' status and the manpage, which was also missing the documentation for the 'C' status in got patch. ok stsp@


dbc68eedb1 Omar Polo

got patch: ignore blobs not found

since diffs are often enclosed in other formats (e.g. emails) we might parse something and think it's a blob id when it's not. This should already happens, but apply_patch is looking for the wrong error due to a leftover from previous attempts. Reported by stsp@ while here tweak the test_patch_merge_unknown_blob to also try with a dummy commit id, as now got-read-patch requires it in order to consider a blob id. ok stsp@


d8b5af438b Omar Polo

use the commitid in the patch diff3 conflict header

suggested by and ok stsp@


55e9459f41 Omar Polo

got patch: use diff3 to merge the changes

Parse the "blob -" metadata in diffs produced by 'got diff' and use the original file for patching. Then, use the diff3 with the current version of the file to merge the differences. This solves many failures automagically or at least turns them into a conflict. ok/improvements stsp@


05737d499b Omar Polo

patch_file: fill tmp with the patched file even in nop mode

future work with diff3 merge will need the fully patched file even in the nop mode ok stsp@


827bcd6cc3 Omar Polo

patch_file: move file ownership to parent

ok stsp@


1b1b91abdb Omar Polo

style: remove double semicolon


06c44edcbf Stefan Sperling

check for errors from fclose() in patch_file()