lib/fileindex.c


Log

Author Commit Date CI Message
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 3dcf3e74 2020-01-28T11:00:34 rewind directory file pointer before re-opening the directory
Stefan Sperling 965988c5 2019-12-16T12:40:02 plug memory leak introduced in commit 6fc93f379e4f736797334532691d298244b2b014
Stefan Sperling 22902794 2019-12-13T11:02:05 this lseek() call in read_dirlist() isn't needed
Stefan Sperling 7f91a133 2019-12-13T11:05:04 open files during status crawl in a race-free way, too
Stefan Sperling ae8965b9 2019-12-13T10:42:39 add missing fdopendir() error check in read_dirlist()
Stefan Sperling 6fc93f37 2019-12-13T10:36:41 prevent the status crawl from racing with paths changing in the filesystem
Stefan Sperling 56e0773d 2019-11-28T02:32:58 convert tree entries from SIMPLEQ to an array
Stefan Sperling 6ced7ba8 2019-09-22T13:28:06 avoid a NULL deref in diff_fileindex_tree(); found by jj@ with scan-build
Stefan Sperling 40b289d7 2019-09-07T12:05:27 make 'got status' ignore inaccessible directories (reported by semarie)
Stefan Sperling 63c5ca5d 2019-08-24T20:56:15 detect and ignore Git submodules
Stefan Sperling b15816dd 2019-08-11T20:01:21 in got_fileindex_entry_update() don't hide errors other than ENOENT
Stefan Sperling ef5e02fd 2019-08-11T18:45:18 don't clobber errno value of opendir(3); found by Hiltjo Posthuma
Stefan Sperling 8957ae76 2019-08-08T16:38:43 ensure that file index entry perms map to regular files
Stefan Sperling 3cd04235 2019-08-03T14:30:02 fix definition of GOT_FILEIDX_F_STAGE_SHIFT
Stefan Sperling 0cb83759 2019-08-03T13:31:03 implement got_worktree_stage_paths()
Stefan Sperling df335242 2019-08-03T12:56:22 add staged blob SHA1 to on-disk file index; bump file index version
Stefan Sperling 83718700 2019-08-03T12:28:51 define file index stage flags
Stefan Sperling 3f762da0 2019-08-03T12:06:47 rename file index entry variables called 'entry' to 'ie'
Stefan Sperling 4d555405 2019-08-03T11:59:34 remove ie->path_len; use path length stored in file index entry flags
Stefan Sperling 9714e35f 2019-08-03T11:36:03 remove unused fileindex flags
Stefan Sperling d6c87207 2019-08-02T16:24:13 require callers to pass path length to got_fileindex_entry_get()
Stefan Sperling 6f8967eb 2019-08-02T16:18:13 always initialize file index entry's path_len field
Stefan Sperling d572f586 2019-08-02T15:42:42 eliminate strlen() calls during fileindex rb tree searches
Stefan Sperling 6bf2c316 2019-08-02T15:12:36 avoid unnecessary memcpy() in read_fileindex_path()
Stefan Sperling fe1d3e7a 2019-08-02T15:01:57 don't potentially leak entry->path in read_fileindex_entry()
Stefan Sperling 26a7fe28 2019-07-27T16:42:04 add conversion functions for fileindex/stat permission bits
Stefan Sperling 30a076bc 2019-07-27T14:57:06 keep fileindex->tree diff code similar to fileindex->DIR diff code
Stefan Sperling 39beb6da 2019-07-27T14:49:09 don't pass DIR pointers around needlessly in fileindex.c
Stefan Sperling c577a9ce 2019-07-25T21:06:41 fix 'got status' recursion problems
Stefan Sperling 638f9024 2019-05-13T12:40:57 rename got_error_prefix_errno() to got_error_from_errno()
Stefan Sperling 03df25b3 2019-05-11T19:13:10 disallow directories with 'got add'; add a TODO item for them
joshua stein 656b1f76 2019-05-11T14:26:12 while (1) -> for (;;)
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 324d37e7 2019-05-11T09:14:30 make got path APIs available to library consumers
Stefan Sperling 573463cc 2019-04-06T05:31:33 init output parameter in walk_dir()
Stefan Sperling 14ae1db5 2019-04-06T05:21:11 plug memory leaks in diff_fileindex_dir()
Stefan Sperling c4cdcb68 2019-04-03T16:17:53 add support for partial updates, which affect specific paths only
Stefan Sperling 13d9040b 2019-03-27T12:33:41 test and improve behaviour for wt edit vs repo rm conflict
Stefan Sperling 2ec1f75b 2019-03-26T10:35:33 add a basic implementation of 'got rm'
Stefan Sperling d00136be 2019-03-26T09:03:53 implement a basic 'got add' command
Stefan Sperling ddce0520 2019-03-26T07:02:59 allow file index entries without blobs and/or commits
Stefan Sperling eb983b4b 2019-03-26T06:49:00 make file index flags private to fileindex.c
Stefan Sperling e288864f 2019-03-26T06:44:27 renmae GOT_FILEIDX_F_NOT_ON_DISK to GOT_FILEIDX_F_NOT_FLUSHED
Stefan Sperling c2ac9456 2019-03-15T16:39:34 add missing 'static' for local functions
Stefan Sperling a0bf6e76 2019-03-15T16:35:47 rename 'intent-to-add' file index flag to 'not-on-disk'
Stefan Sperling c442a90d 2019-03-10T15:55:28 read UUID back from work tree meta data
Stefan Sperling 927df6b7 2019-02-10T18:42:29 allow restricting 'got diff' and 'got status' to a path in work tree
Stefan Sperling 13ff9e90 2019-02-10T16:53:56 use break instead of goto to exit loop; no functional change
Stefan Sperling 18831e78 2019-02-10T16:32:21 fix another path ordering bug during status/update crawl
Stefan Sperling 02c07007 2019-02-10T12:46:14 don't update cached timestamps of already modified files
Stefan Sperling fdb730fe 2019-02-06T00:53:28 remove an '#if 0' which was not intended for commit
Stefan Sperling c7f4312f 2019-02-05T17:46:58 make 'got status' work in subdirectories of a work tree
Stefan Sperling 95e06996 2019-02-05T15:53:09 fix memleak in previous commit
Stefan Sperling ed83bff7 2019-02-05T15:50:03 we must use dynamic allocation for dirents in diff_fileindex_dir()
Stefan Sperling e7a2f030 2019-02-05T15:30:23 fix code before declaration
Stefan Sperling 763e1377 2019-02-05T15:25:17 fix an uninitialized variable in diff_fileindex_dir()
Stefan Sperling f5d3d7af 2019-02-05T15:19:24 use path lists to sort dirent, tree object, and file index entries
Stefan Sperling fc727cc5 2019-02-05T11:16:33 insert at tail of list in insert_dirent()
Stefan Sperling 554b91b1 2019-02-04T16:55:18 oops, fix endless loop in diff_fileindex_dir(); code was missing somehow
Stefan Sperling 500cd40f 2019-02-04T14:19:29 make fileindex dir diff traverse dirents in git-tree order
Stefan Sperling b25ae4fa 2019-02-04T12:18:23 ignore top-level .got dir during fileindex dir diff
Stefan Sperling b1ec3986 2019-02-04T11:51:19 skip "." and ".." in diff_fileindex_dir()
Stefan Sperling d1f6d47b 2019-02-04T11:17:36 add support for diffing fileindex against an on-disk directory tree
Stefan Sperling f44ffd20 2019-02-04T10:59:59 rename tree-specific fileindex diff callbacks
Stefan Sperling 62d20534 2019-01-29T00:09:32 remove redundant condition check in cmp_entries()
Stefan Sperling bad322f2 2019-01-29T00:02:42 make cmp_entries() operate on paths instead of structs
Stefan Sperling 9d2a8e53 2019-01-28T23:55:41 move forward declaration of diff_fileindex_tree() further down
Stefan Sperling 70e2377c 2019-01-28T23:54:46 move definition of cmp_entries() closer to point of use
Stefan Sperling 63de4136 2019-01-28T23:51:52 turns out in_same_subdir() check is mostly redundant
Stefan Sperling c18d206e 2019-01-28T23:17:39 simplify in_same_subdir()
Stefan Sperling 85987309 2019-01-28T23:15:22 eliminate code duplication in cmp_entries() and in_same_subdir()
Stefan Sperling 99fda3ad 2019-01-28T23:10:32 eliminate redundant strlen() call inside in_same_subdir()
Stefan Sperling 5d79cba5 2019-01-28T23:09:27 eliminate redundant strlen() call in cmp_entries()
Stefan Sperling 6e8d14a3 2019-01-28T23:05:12 eliminate code duplication in cmp_entries()
Stefan Sperling fd92308e 2019-01-28T22:59:46 invert same subdir check in cmp_entries(); no functional change
Stefan Sperling f06111e5 2019-01-28T22:57:56 remove unused parameter of in_same_subdir()
Stefan Sperling 5d56da81 2019-01-13T17:15:53 happy new copyright year
Stefan Sperling 21908da4 2019-01-13T13:59:20 fix bug where update got confused by sub-sub directories
Stefan Sperling bd4792ec 2019-01-13T12:56:35 fix more bugs in the update walk and add more tests
Stefan Sperling a7f9d64d 2019-01-13T01:52:51 change GOT_INDEX_ENTRY prefix to GOT_FILEIDX
Stefan Sperling b6d05318 2019-01-13T01:05:23 don't bother with memcpy for hdr in got_fileindex_read()
Stefan Sperling 27d0e5bd 2019-01-12T23:05:44 flush the file index after writing it
Stefan Sperling a5744d71 2019-01-12T23:00:44 don't bother with memcpy of header when writing the file index
Stefan Sperling 50952927 2019-01-12T21:00:42 fix various issues in new update implementation
Stefan Sperling 27793341 2019-01-12T18:58:04 introduce special error code for a corrupt file index
Stefan Sperling 8da9e5f4 2019-01-12T18:39:19 implement checkout+update as single-pass diff between file index and tree
Stefan Sperling 7a9df742 2019-01-08T23:52:50 replace use of got_pathset in worktree code with RB tree
Stefan Sperling 133d2798 2019-01-08T23:00:56 use RB tree directly instead of a pathset in file index code
Stefan Sperling 6b798c3c 2019-01-08T22:22:53 don't forgot to free file index entries in got_fileindex_free()
Stefan Sperling b504a804 2019-01-08T22:18:23 switch file index entries from TAILQ to got_pathset
Stefan Sperling e1ed7f77 2019-01-06T13:47:14 must use safe iteration over file index entries
Stefan Sperling 512f0d0e 2019-01-03T00:57:49 make 'got update' remove files which were deleted
Stefan Sperling 3c5b70f2 2018-12-27T20:23:37 always NUL-terminate paths in write_fileindex_path()
Stefan Sperling 60619907 2018-12-27T19:37:53 fix check for NUL byte in read_fileindex_path()
Stefan Sperling 51514078 2018-12-25T16:18:05 preparation for idempotent checkout: read exisiting file index
Stefan Sperling fc76cabb 2018-12-25T15:24:16 store base commit of each blob in file index
Stefan Sperling 3fe2daf1 2018-12-24T17:03:21 remove pointless memcopies from fileindex code
Stefan Sperling 7426bbfd 2018-12-24T16:53:03 rename fileindex functions from open/close to alloc/free
Stefan Sperling 9eb6a6b2 2018-12-24T16:48:45 fix byte-swaps in fileindex read code