lib/fileindex.c

Branch


Log

Author Commit Date CI Message
Omar Polo 336075a4 2022-06-25T09:22:02 build with -Wmissing-prototypes ok stsp@
Stefan Sperling a7472cb3 2022-04-14T15:00:59 check return value of RB_INSERT; ok + memleak fix by op@
Stefan Sperling a47330a2 2022-01-27T22:32:09 fix 'got status' reporting all directories on NFS mounts as unversioned Problem found and fix tested by Ted Bullock. ok millert, naddy
Stefan Sperling c0df5966 2021-12-31T09:33:01 wrap overlong lines
Stefan Sperling e7ae0baf 2021-12-31T09:11:22 add O_CLOEXEC (close-on-exec) to openat(2) calls suggested by millert ok thomas_adam
Stefan Sperling 8f2ca62d 2021-10-13T10:34:06 do not skip ignored directories in 'got status' if they contain tracked files Fixes regression introduced by commit 41f061b2f459318f3738f59d7676efccc4beb344 where tracked files inside an ignored directory were reported as missing.
Stefan Sperling 62da3196 2021-10-01T13:58:31 skip ignored directories during 'got status' disk crawl
Stefan Sperling a769b60b 2021-06-27T09:22:52 fix a bug where files skipped by 'got update' could not be updated again ok semarie@
Stefan Sperling 194cb7cb 2021-01-19T07:38:37 fix bug where 'got up -c commit path' deleted unrelated files from work tree Problem reported by Timo Myyrä
Yang Zhong 437adc9d 2020-12-10T08:29:04 add fd field to got_worktree, modify got_fileindex_entry_update to use fds These changes are intended to make got more compatible with FreeBSD's Capsicum. ok stsp
Christian Weisgerber 0823ffc2 2020-09-10T20:44:40 use modern POSIX timestamp fields in struct stat ok stsp
Stefan Sperling aa9ad276 2020-07-25T09:17:55 fix use of uninitialized variable in got_fileindex_entry_update()
Stefan Sperling 0aeb8099 2020-07-23T14:22:37 set a staged file type and handle it separately from the on-disk file type
Stefan Sperling cf34e6e7 2020-07-23T14:22:36 mark functions which are not exposed to other files as static
Stefan Sperling 4723f050 2020-07-23T14:22:36 more fixes for setting/getting file index entry filetype and permissions
Stefan Sperling 6131ab45 2020-07-23T14:22:36 remove pointless error checking in got_fileindex_entry_filetype_set()
Stefan Sperling 984c073d 2020-07-23T14:22:36 add getter/setter for staged file index entry filetype
Stefan Sperling f5f1f9c2 2020-07-23T14:22:35 handle on-disk file index entry filetypes properly
Stefan Sperling 2e1fa222 2020-07-23T14:22:34 give bad symlinks a dedicated file type in the file index
Stefan Sperling ef8d6031 2020-07-23T14:22:34 keep file index entry permission bits clear for symlinks
Stefan Sperling 20ccae39 2020-07-21T14:19:32 cope with directory entries returned from readdir(3) with type DT_UNKNOWN Such directory entries need special handling to make our directory traversal code work on filesystems that do not support the d_type optimization. I found this problem because references stored in the refs/ directory were not shown by 'got log' and 'tog log' when a repository is mounted over NFS. helpful feedback + ok millert@
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 0553429d 2020-06-07T09:25:08 fix symlink check in got_fileindex_entry_update()
Stefan Sperling 8bd8568c 2020-04-24T16:23:39 remove file index entries from RB tree upon flush to disk Fixes a file index corruption problem with 'got rebase' found by tracey. ok tracey
Stefan Sperling 3969253a 2020-03-07T19:01:44 remove implicit entry update from got_fileindex_entry_alloc(); just alloc
Stefan Sperling 71ec7eac 2020-01-28T14:52:27 kill left-over debug code snippet from a46b9f33fb3018765180eb67cc954d863a5cd525
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()