lib/worktree.c


Log

Author Commit Date CI Message
Stefan Sperling a919d5c4 2020-07-23T14:21:27 make 'got rm' work on symlinks; test case written by tracey
Stefan Sperling 8ba819a3 2020-07-23T14:21:27 let 'got checkout' create symlinks in a work tree
Stefan Sperling 00bb5ea0 2020-07-23T14:21:27 make 'got add' work on symlinks and let 'got status' display them
Stefan Sperling f35fa46a 2020-07-23T14:21:27 add symlink support to 'got update'
Stefan Sperling 0ab20ee9 2020-07-23T14:21:27 fix handling of symlinks to a nonexistent target
Stefan Sperling 3665fce0 2020-07-13T12:58:54 display affected file path in ERR_FILE_OBSTRUCTED error messages
Stefan Sperling b737c85a 2020-06-26T10:10:52 fix endless loop introduced in 3143d852; programming is hard!
Stefan Sperling 3143d852 2020-06-25T06:53:54 fix ignores when a path is passed to 'got status' Problem reported by semarie, who also provided initial regression test code. ok semarie
Stefan Sperling 054041d0 2020-06-24T17:15:00 replace the update_blob_fileindex_entry() helper function This makes it easier to tell in which code paths we are expecting to handle a potential 'ie' NULL pointer and avoids a pointless search of the file index.
Stefan Sperling 5a58a424 2020-06-23T16:10:01 plug a memory leak in delete_blob()
Stefan Sperling 5036ab18 2020-04-18T18:40:00 make 'got update' skip conflicted files ok millert@
Stefan Sperling 678ade17 2020-03-22T15:44:34 don't error out if rebase sees no merged paths; elide the commit instead
Stefan Sperling ba580f68 2020-03-22T15:08:33 prevent 'got commit' from comitting empty sub-directories; found by tracey
Stefan Sperling 3969253a 2020-03-07T19:01:44 remove implicit entry update from got_fileindex_entry_alloc(); just alloc
Tracey Emery 15341bfd 2020-03-05T14:39:37 trim directories in got remove -R This is a racy solution that needs to be properly implemented in the future. ok stsp
Stefan Sperling de05890f 2020-03-05T10:53:53 fix histedit 'rebase commit ID mismatch' error when splitting a commit Commit IDs on histedit's temporary branch can change arbitrarily because the user may create new commits on this branch while editing past commits. So there is no point in trying to verify these IDs like we do during rebase. Add a test case which demonstrates the problem.
Stefan Sperling 63f810e6 2020-02-29T07:54:55 when "bad path" errors occur, always show the path in question
Tracey Emery 3c24af98 2020-02-07T21:06:03 fix segfault in got backout which include deleted files
Stefan Sperling 6201aef3 2020-02-02T09:20:56 ignore EROFS during checkout for repositories on read-only filesystems
Stefan Sperling a46b9f33 2020-01-28T12:09:03 fix a bug where 'got revert -R' failed on added subtrees The command could fail with "got: no such entry found in tree". This problem is reproduced by the regression test added in this commit. This happened because file index entries were processed in the wrong order by diff_fileindex_dir(). To fix this, keep removed entries in the RB tree and skip them when the file index is written out, rather than removing entries from the RB tree immediately causing side-effects for RB_NEXT and friends.
Stefan Sperling 867630bb 2020-01-17T11:54:27 Sleep for one nanosecond after syncing the file index to disk Ensures that files modified after got exits have a different timestamp from the one which was recorded in the file index. Previously, 'got status' did not always detect such files as modified. Problem reported by Steven McDonald.
Stefan Sperling bb51a5b4 2020-01-13T10:28:58 add -E option to 'got checkout' allowing use of a non-empty work tree path needed by and ok kn@
Stefan Sperling 5aa81393 2020-01-06T19:38:23 add copyright year for files already touched in 2020
Stefan Sperling e51d7b55 2020-01-04T08:35:17 prevent rebase with an out-of-date work tree
Stefan Sperling 7f47418f 2019-12-20T15:54:59 make 'got checkout' and 'got update' work with read-only repositories but warn users about the garbage collection problem
Stefan Sperling fdcb7daf 2019-12-15T11:15:48 always unlink merged temporary files if an error occurs
Stefan Sperling 2ad902c0 2019-12-15T11:03:52 use fchmod() instead of chmod() to tweak permissions of a merged temp file
Stefan Sperling 32d2fb48 2019-12-15T10:53:14 add missing error checks to an openat() call
Stefan Sperling 60522982 2019-12-15T10:35:13 fix wrong function names in errno error messages
Stefan Sperling 886cec17 2019-12-15T10:33:27 close races with concurrent filesystem modification when reading ignore files
Tracey Emery 70e3e7f5 2019-12-13T20:05:57 add -k option to 'got remove' to keep files on disk ok stsp
Stefan Sperling ab0d4361 2019-12-13T12:00:10 fix leak in an error path of get_file_status()
Stefan Sperling 882ef1b9 2019-12-13T11:19:26 fix fstatat() and openat() error checking in get_file_status()
Stefan Sperling 3d35a492 2019-12-13T11:10:25 avoid opening the file in get_file_status() if possible
Stefan Sperling 82223ffc 2019-12-13T11:09:40 fix wrong function name in errno error message
Stefan Sperling 12463d8b 2019-12-13T11:52:18 address some of the file descriptor vs. path races in status callbacks
Stefan Sperling 7f91a133 2019-12-13T11:05:04 open files during status crawl in a race-free way, too
Stefan Sperling 6fc93f37 2019-12-13T10:36:41 prevent the status crawl from racing with paths changing in the filesystem
Stefan Sperling f4d199c9 2019-12-13T10:02:48 oops, fix previous
Stefan Sperling 43ff8261 2019-12-13T10:01:49 check for fclose() failure in get_file_status()
Stefan Sperling 1338848f 2019-12-13T09:38:52 open the file just once in get_file_status()
Tracey Emery f2a9dc41 2019-12-13T00:29:28 add -R option to 'got remove' for recursive deletion ok stsp
Stefan Sperling dbb83fbd 2019-12-13T00:27:57 there's no need to store a directory path in struct schedule_addition_args ok tracey
Tracey Emery 022fae89 2019-12-06T16:18:26 Introduce -I to cmd_add to disregard ignores when adding recursively. Expand add.sh tests. Update TODO.
Stefan Sperling 56e0773d 2019-11-28T02:32:58 convert tree entries from SIMPLEQ to an array
Stefan Sperling 3fd4eb5a 2019-11-23T10:13:53 fold a function call onto a single line
Stefan Sperling 4e68cba3 2019-11-23T10:11:54 add -R option to 'got add' for recursive addition (patch by Tracey Emery)
Stefan Sperling 6dd1ece6 2019-11-10T11:32:03 when an object id string is bad, include the bad string in the error message
Stefan Sperling 7b5dc508 2019-10-28T10:31:50 fix staging of multiple files with -p ok semarie
Stefan Sperling 8b692cd0 2019-10-21T09:04:57 remove lock files, as intended, when reintegrate gets aborted
Stefan Sperling f69721c3 2019-10-21T09:04:57 show base commit hash and omit filenames in conflict markers
Stefan Sperling 46f68b20 2019-10-19T11:06:56 show file mode differences when diffing trees
Stefan Sperling 523b8417 2019-10-19T11:06:55 handle xbit-only changes during 'got update'
Stefan Sperling 1ebedb77 2019-10-19T11:06:55 teach 'got commit' to tweak the executable bit of a file
Stefan Sperling 2822a352 2019-10-15T11:38:27 add 'got integrate' command
Stefan Sperling bd8de430 2019-10-04T14:51:33 make 'got status' read .gitignore files; support **/ and /**/ in patterns
Hiltjo Posthuma 500467ff 2019-09-25T22:02:03 getline: fix the return type to ssize_t and small nits
Steven McDonald 303e14b5 2019-09-22T16:04:05 Add missing includes for time() and ctime() These headers were implicitly used on OpenBSD, but building on Linux revealed that <time.h> wasn't included directly. diffreg.c uses ctime(), which additionally needs <sys/types.h>.
Stefan Sperling f66c734c 2019-09-22T15:24:34 missing error check in write_tree(); found by jj@ with scan-build
Stefan Sperling 909d120e 2019-09-22T15:21:26 missing errer check in update_blob(); found by jj@ with scan-build
Hiltjo Posthuma d6fca0ba 2019-09-15T13:51:17 check calloc() for NULL return value
Stefan Sperling c9956ddf 2019-09-08T18:13:54 use author name/email from ~/.gitconfig if GOT_AUTHOR is not set
Stefan Sperling 4b55f459 2019-09-08T13:13:37 fix indentation in lib/worktree.c
Stefan Sperling 40b289d7 2019-09-07T12:05:27 make 'got status' ignore inaccessible directories (reported by semarie)
Stefan Sperling 72fd46fa 2019-09-06T17:11:26 fix modified files not shown by 'got status' after committing staged changes
Stefan Sperling cc483380 2019-09-01T13:08:13 fix NULL deref in got_error_from_errno via got_error_uuid (found by jasper)
Hiltjo Posthuma 7f11502c 2019-08-28T18:48:27 fix possible use-after-free in got_worktree_close()
Stefan Sperling 63c5ca5d 2019-08-24T20:56:15 detect and ignore Git submodules
Stefan Sperling 2a06fe5f 2019-08-24T12:58:07 indicate non-existent paths in 'got status' and make 'got diff' error for them
Stefan Sperling e6209546 2019-08-22T11:12:24 untie cancel callback declaration from the work tree
Stefan Sperling 0b2899f8 2019-08-18T11:26:15 attribute commits created with git(1) in test suite to Flan Hacker
Sebastien Marie 3d69ad8d 2019-08-17T15:28:04 make 'got revert' to ignore unversioned files instead of aborting with 'bad path' and add a regress to check the revert isn't aborted anymore
Stefan Sperling 5943eee2 2019-08-13T16:58:34 strip Git GPG signatures from log messages
Stefan Sperling 12ce7a6c 2019-08-12T20:56:30 include <limits.h> instead of <sys/limits.h>; patch by Thomas Klausner
Stefan Sperling f1e81a05 2019-08-10T16:57:20 fix bug where 'revert -p' would delete all lines following a reverted change
Stefan Sperling a0de39f3 2019-08-09T11:56:24 fix build on OpenBSD/sparc64 (gcc)
Stefan Sperling b80270a7 2019-08-09T00:12:00 make 'got status' find top-level .cvsignore when invoked from a subdir
Stefan Sperling 6841da00 2019-08-08T23:53:17 add support for .cvsignore files, as found in /usr/ports, to 'got status'
Stefan Sperling e635744c 2019-08-08T18:25:59 merge create_staged_content() and create_reverted_content() helpers
Stefan Sperling 33aa809d 2019-08-08T18:17:04 implement 'revert -p'
Stefan Sperling d3bcc3d1 2019-08-08T17:27:36 make revert of a staged deletion a no-op for better interaction with -R
Stefan Sperling 65084dad 2019-08-08T16:52:12 in revert_file(), only construct on-disk path when actually needed
Stefan Sperling 2163d960 2019-08-08T16:49:36 rename local variable on got_worktree_revert()
Stefan Sperling 1f1abb7e 2019-08-08T16:39:07 implement revert with a status walk to prepare for 'revert -p'
Stefan Sperling af5a81b2 2019-08-08T14:08:34 fix and test repeated stage -p on the same file
Stefan Sperling 8b13ce36 2019-08-08T13:02:20 fix and test stage/unstage with unversioned files
Stefan Sperling 19e4b907 2019-08-08T12:22:52 fix and test 'q' command for unstage -p
Stefan Sperling 2e1f37b0 2019-08-08T12:04:29 implement 'got unstage -p'
Stefan Sperling 14c901f1 2019-08-08T09:25:49 split up worktree.c's merge_blob() into merge_blob() and merge_file()
Stefan Sperling 88f33a19 2019-08-08T08:54:18 ensure that stage -p choice 'q' doesn't skip subsequent files
Stefan Sperling a7c9878d 2019-08-08T08:40:38 make stage -p show the number of changes in a file
Stefan Sperling 2db2652d 2019-08-07T18:25:46 make path arguments to 'got stage' optional
Stefan Sperling b353a198 2019-08-07T17:40:15 add 'q' response to 'got stage -p'
Stefan Sperling dc424a06 2019-08-07T17:26:35 initial 'got stage -p' implementation
Stefan Sperling 3aa5969e 2019-08-06T18:16:41 check the status of specified paths before staging any of them
Stefan Sperling aa9f8247 2019-08-05T10:45:52 simplify a block of code in check_out_of_date()
Stefan Sperling f0b0c0ce 2019-08-04T18:41:02 fix 'mv foo bar; got rm foo; got add bar' and put paths in error messages
Stefan Sperling f032f1f7 2019-08-04T14:10:07 fix and test interaction of rebase/histedit -c and 'got stage'
Stefan Sperling 6d022e97 2019-08-04T12:45:17 use get_worktree_paths_from_argv consistently; improves add/rm edge cases Double 'got rm' becomes a no-op like double 'got add' already is, and 'got add' of an already staged file is now an error.
Stefan Sperling 9bc94a15 2019-08-04T00:57:17 unstage: report new current status for deleted unstaged paths