lib/diff3.c


Log

Author Commit Date CI Message
Christian Weisgerber abc59930 2021-09-05T19:41:03 indentation fixes
Stefan Sperling fdf3c2d3 2021-06-17T09:01:05 use Patience diff for merging during cherrypick/backout/histedit/rebase This has been shown to prevent mis-merges in some cases. It's probably not a final solution. We should look at what Git's "recursive merge" is doing and implement something similar. Keep using Myers during update/unstage. The advantage of Myers is that it produces smaller conflict chunks, and there are no known cases of mis-merges which affect update/unstage.
Stefan Sperling db590691 2021-06-02T09:24:51 make merge_file() accept FILEs instead of paths for orig and deriv inputs
Stefan Sperling 1fee9f40 2021-04-13T08:28:24 fix 3-way merge of files which lack a final \n problem found by jrick ok millert
Stefan Sperling bc62ede8 2021-02-26T17:31:35 use Myers diff instead of Patience diff when merging files with diff3 Myers diff tends to divide files into smaller diff chunks, while Patience diff attemps to maximize the size of diff chunks. Smaller diffs chunks generally result in a more managable presentation of merge conflicts.
Stefan Sperling 56b63ca4 2021-01-22T11:04:47 make fclose(3) failure checks consistent; check 'fclose() == EOF' everywhere ok millert, naddy
Stefan Sperling 16aeacf7 2020-11-26T12:54:19 use size_t for loop indices to avoid signedness warnings; from emaste@freebsd
Stefan Sperling 1cb46f00 2020-11-21T15:34:19 consistently label removed files as "/dev/null" in diff headers
Stefan Sperling 64453f7e 2020-11-21T13:35:00 handle binary files in got/tog diff commands; add -a options to force text
Stefan Sperling fe621944 2020-11-10T22:54:37 merge new diff implementation from the git.gameoftrees.org diff.git repository This new diff implementation was started by Neels Hofmeyr during the u2k20 hackathon and now replaces diffreg.c code lifted from the OpenBSD base system. The integration of this code into Got was done by me. Got now uses the patience diff algorithm by default. The diff.git repository will remain the primary repository for the diff code, which already compiles and runs on other operating systems such as Linux. Any fixes and improvements for files inherited from the diff.git repository should be written against that repository and synced to got.git afterwards.
Stefan Sperling 21c17f12 2020-06-26T07:09:35 fix merging with files that do not contain a newline character; ok millert@
Stefan Sperling bb63914a 2020-02-17T21:57:56 make tmp dir location a compile-time setting and change gotweb's tmp dir We are not sure whether a gotweb package can own /var/www/tmp on OpenBSD. Moving gotweb's tmp dir to /var/www/got/tmp sidesteps that issue.
Stefan Sperling 937e0e58 2019-10-21T10:53:42 fix build on sparc64 (uninitialized variable)
Stefan Sperling f69721c3 2019-10-21T09:04:57 show base commit hash and omit filenames in conflict markers
Stefan Sperling d136cfcb 2019-10-12T07:33:12 show original file content in conflict markers
Stefan Sperling d59c0cb2 2019-10-09T08:55:19 improve use of mixed size_t/off_t types in diff3.c's edscript()
Stefan Sperling b2338eff 2019-10-09T08:45:51 diff3.c: do not use the same variables for both line numbers and byte offsets
Stefan Sperling 88775814 2019-10-09T08:30:54 diff3.c's skip() returns number of bytes skipped so switch from int to size_t
Stefan Sperling 96cbb597 2019-10-09T08:24:38 remove worklist code; it was only used to unlink files which we already unlink
Stefan Sperling 68bda3b1 2019-10-09T08:20:05 diff3.c: check for unlink errors and unlink dp13 and dp23 again
Stefan Sperling 9688d20a 2019-10-09T08:02:04 rename local variable in diff3.c's edscript() from j to len (not a loop index)
Stefan Sperling 9d4a5e89 2019-10-09T07:57:27 rename local variable in diff3.c's skip() from j to len (not a loop index)
Stefan Sperling db330080 2019-10-09T07:45:59 remove pointless attempt of unlinking temporary file name template paths
Stefan Sperling e4531130 2019-10-09T07:35:37 do not leak open file in diff3.c's readin() error paths
Stefan Sperling 971405a7 2019-10-09T07:32:03 do not abuse d3s->fp[0] as a local variable in diff3.c's readin()
Stefan Sperling 50351dee 2019-10-09T07:26:28 remove unused 'pr' argument from diff3.c's skip() function
Stefan Sperling 575e8218 2019-10-07T10:26:33 more mechanical conversions to struct got_error: buf_load() and buf_alloc()
Stefan Sperling e19660d5 2019-10-06T18:59:31 some whitespace fixes in diff3.c
Stefan Sperling 346b301a 2019-10-06T18:51:41 check for errors from buf_append() in diff3.c's diff_output()
Stefan Sperling 950435fd 2019-10-06T18:48:11 remove pointless debug code from diff3.c
Stefan Sperling 18b9ebab 2019-10-06T18:44:35 eflag in diff3.c is hard-coded to 3; remove code for other cases
Stefan Sperling e9dabdfb 2019-10-06T18:23:02 check for errors from fseek(3) in diff3.c's edscript()
Stefan Sperling ce09ab8d 2019-10-06T18:20:02 check for errors from diff_output() in diff3.c
Stefan Sperling 02b87977 2019-10-06T18:11:34 convert remaining functions in diff3.c to struct got_error
Stefan Sperling f571bb85 2019-10-06T17:36:20 convert error handling in diff3.c's repos() to struct got_error
Stefan Sperling 180dce26 2019-10-06T17:09:32 convert handling in diff3.c's merge() function to struct got_error
Hiltjo Posthuma 500467ff 2019-09-25T22:02:03 getline: fix the return type to ssize_t and small nits
Stefan Sperling b077bccd 2019-09-22T19:03:17 remove pointless oflag from struct diff3_state
Steven McDonald 6dea73df 2019-09-22T22:47:16 Replace fgetln() with getline() getline() is, per the latter's OpenBSD man page, safer and more portable than fgetln().
Stefan Sperling acb4e1d1 2019-08-10T18:43:09 sync merge(1) fix diff from OpenRCS/OpenCVS
Stefan Sperling d473b4e4 2019-08-10T00:49:10 fix merge bug inherited from OpenRCS, affecting lines with leading .
Stefan Sperling 638f9024 2019-05-13T12:40:57 rename got_error_prefix_errno() to got_error_from_errno()
joshua stein 230a42bd 2019-05-11T13:04:38 got_error_from_errno -> got_error_prefix_errno also add got_error_prefix_errno2 and got_error_prefix_errno3 which should hopefully all be merged into a single function with variadic args (but can't alloc mem)
Stefan Sperling 01a44956 2019-03-27T08:36:44 declare conflict marker strings in got_lib_diff.h
Stefan Sperling fb43ecf1 2019-02-11T11:59:09 check for errors from fclose()
Stefan Sperling cbe7f848 2019-02-11T11:35:55 check for fflush() errors
Stefan Sperling 57ee5d50 2019-02-08T15:10:49 allow callers of diff3 code to detect merge conflicts
Stefan Sperling a551f215 2019-02-08T14:58:30 diff3: make labels work and fix leaks
Stefan Sperling 5d731149 2019-02-08T13:22:01 initialize temp_files in got_merge_diff3()
Stefan Sperling abc6a33f 2019-02-08T13:20:08 make readin() actually write to its output argument
Stefan Sperling 25d0340b 2019-02-08T12:27:42 get rid of an unused global in diff3 code
Stefan Sperling 5176f942 2019-02-08T12:26:49 get rid of another global in diff3 code (diff output buffer)
Stefan Sperling c03c6cb3 2019-02-08T11:13:38 make diff3 code compile
Stefan Sperling 5a3ad9e0 2019-02-08T12:06:59 wrap overlong long line and fix NULL-deref in merge_diff3()
Stefan Sperling dfc4f8fe 2019-02-08T11:51:52 move more globals into diff state struct
Stefan Sperling 0ec6f014 2019-02-08T11:58:03 expand stupid argv-style parameters of merge_diff3()
Stefan Sperling 078e971d 2019-02-08T11:44:53 this is library code; store diff3 state in a struct, not globals
Stefan Sperling 62f59172 2019-02-08T12:01:51 make diff3_merge() write result to an output file
Stefan Sperling 9f98de9c 2019-02-08T12:09:28 declare got_merge_diff3()
Stefan Sperling 0d26ce36 2019-02-08T11:48:50 fix known file descriptor leaks in diff3 code
Stefan Sperling b90524b1 2019-02-08T11:55:19 check for errors from increase() in diff3 code
Stefan Sperling 74b37681 2019-02-07T11:30:27 add unmodified buf.c, buf.h, and diff3.c from OpenRCS