History of file appfsd.c at check-in 5ffd966f0575277610544b9a7c5d9b603f2c12df
2020-05-15
| ||
01:25 | Use an environment variable to control debug logging at runtime file: [4ff2357fbb] check-in: [2374e0de64] user: rkeene, branch: trunk, size: 57754 [annotate] [blame] [check-ins using] [diff] | |
2020-05-12
| ||
15:09 | Improve debug logging flexibility file: [b81dc3008d] check-in: [e722919c08] user: rkeene, branch: trunk, size: 57664 [annotate] [blame] [check-ins using] [diff] | |
2019-12-13
| ||
00:33 | Cleaned up code in preparation for Windows build file: [0494c72e1d] check-in: [fdf89fd103] user: rkeene, branch: trunk, size: 57414 [annotate] [blame] [check-ins using] [diff] | |
2017-02-22
| ||
23:03 | Fixed reference counting with the "exec" target file: [b7dddfc0b8] check-in: [fc81c2f879] user: rkeene, branch: trunk, size: 56325 [annotate] [blame] [check-ins using] [diff] | |
2017-02-06
| ||
15:57 | Added support for a Tcl "exec" target to be compiled in file: [99975a5e76] check-in: [3d73fc5750] user: rkeene, branch: trunk, size: 56251 [annotate] [blame] [check-ins using] [diff] | |
2016-07-10
| ||
19:05 | Fixed typo in debug message file: [f0663dcc45] check-in: [936a791a4a] user: rkeene, branch: trunk, size: 54643 [annotate] [blame] [check-ins using] [diff] | |
19:05 | Updated to finalize a thread that terminated even if there are no current Tcl interpreters associated with it file: [9b20b616c9] check-in: [b03c6db3d1] user: rkeene, branch: trunk, size: 54642 [annotate] [blame] [check-ins using] [diff] | |
2015-11-19
| ||
16:01 | Updated initializer to be explicitly unsigned file: [33db21bdfd] check-in: [f905360d64] user: rkeene, branch: trunk, size: 54639 [annotate] [blame] [check-ins using] [diff] | |
2015-10-14
| ||
17:48 | Updated to set resource limits for number of open files at startup, if possible file: [55077e4885] check-in: [ea36882e15] user: rkeene, branch: trunk, size: 54638 [annotate] [blame] [check-ins using] [diff] | |
17:47 | Changed mount options to remove "direct_io", which breaks mmap and performed additional cleanups file: [6b6df68529] check-in: [1c47ca9097] user: rkeene, branch: trunk, size: 53475 [annotate] [blame] [check-ins using] [diff] | |
2015-07-31
| ||
03:02 | Fixed inode lookup and determination of a file being packaged or not file: [647fdab61a] check-in: [1e2435553a] user: rkeene, branch: trunk, size: 53476 [annotate] [blame] [check-ins using] [diff] | |
2015-05-12
| ||
13:30 | Updated to be more subtle with differing inodes, only differ them if the files are different file: [388927f9ca] check-in: [3021e03379] user: rkeene, branch: trunk, size: 53044 [annotate] [blame] [check-ins using] [diff] | |
2015-05-05
| ||
21:58 | Updated to give each file owned by a different UID their own inode so the VFS will (maybe) think they are different files file: [59919e0d2e] check-in: [ed7fabb181] user: rkeene, branch: trunk, size: 52917 [annotate] [blame] [check-ins using] [diff] | |
2015-03-20
| ||
01:50 | Updated to set umask on startup file: [6a6fdd4f92] check-in: [01c5bfc689] user: rkeene, branch: trunk, size: 52887 [annotate] [blame] [check-ins using] [diff] | |
2015-03-19
| ||
16:09 | Allow administrators to provide additional/replaced permissions for files, fixed suidRoot setting file: [fe7e6328bd] check-in: [e9fcc6d8f5] user: rkeene, branch: trunk, size: 52838 [annotate] [blame] [check-ins using] [diff] | |
2015-03-18
| ||
17:20 | Added basic support for removing the world/group permissions from files file: [3e9adabf49] check-in: [152a83b125] user: rkeene, branch: trunk, size: 52494 [annotate] [blame] [check-ins using] [diff] | |
2014-12-29
| ||
03:49 | Updated to exit in success from "-h" and to ignore the "-v" option file: [7c511aec25] check-in: [ff9238cef4] user: rkeene, branch: trunk, size: 51885 [annotate] [blame] [check-ins using] [diff] | |
2014-11-18
| ||
03:07 | Added ignored option for "rw" for fstab support file: [bb0851401c] check-in: [a2d245a487] user: rkeene, branch: trunk, size: 51801 [annotate] [blame] [check-ins using] [diff] | |
02:56 | Added licensing information (MIT License) file: [0194f4a093] check-in: [9dd5234a64] user: rkeene, branch: trunk, size: 51624 [annotate] [blame] [check-ins using] [diff] | |
01:06 | Moved option parsing to a separate function and added help, set default directory time to start time file: [dafdf12fdd] check-in: [7324be78ca] user: rkeene, branch: trunk, size: 50509 [annotate] [blame] [check-ins using] [diff] | |
2014-11-17
| ||
20:37 | Updated to include entire error stack on error for --tcl mode in AppFSd file: [276d2f6247] check-in: [4b2e0bf187] user: rkeene, branch: trunk, size: 47743 [annotate] [blame] [check-ins using] [diff] | |
2014-11-15
| ||
19:34 | Updated inode generation to be FNV-1a file: [cbe8db4a9d] check-in: [fac74d236f] user: rkeene, branch: trunk, size: 47705 [annotate] [blame] [check-ins using] [diff] | |
19:17 | Added missing Tcl_Preserve() call file: [430dbcdf6b] check-in: [71bdb44ec6] user: rkeene, branch: trunk, size: 47480 [annotate] [blame] [check-ins using] [diff] | |
17:33 | Added symlink creation support file: [ce9351a270] check-in: [f6af28366e] user: rkeene, branch: trunk, size: 47437 [annotate] [blame] [check-ins using] [diff] | |
17:20 | Updated to flush cache before exiting in exit path mode and allow short reads without returning an error as they seem to be expected file: [1c0ba85f13] check-in: [67735b9ee3] user: rkeene, branch: trunk, size: 46943 [annotate] [blame] [check-ins using] [diff] | |
16:46 | Added more debugging, renamed appfs_terminate_interp for with more accurate name, fixed FUSE read/write to use pread/pwrite and return no short reads as is required by FUSE, added call to Tcl_FinalizeThread() on thread termination file: [69177869fa] check-in: [d5bfe6710c] user: rkeene, branch: trunk, size: 46937 [annotate] [blame] [check-ins using] [diff] | |
2014-11-14
| ||
21:46 | Updated to support unthreaded Tcl and fixed a memory leak with home directory determination file: [1768754e26] check-in: [6af0168ed8] user: rkeene, branch: trunk, size: 44446 [annotate] [blame] [check-ins using] [diff] | |
17:26 | Made exit path ifdef more consistent file: [b7668e46f2] check-in: [2bb04fd22b] user: rkeene, branch: trunk, size: 41461 [annotate] [blame] [check-ins using] [diff] | |
17:25 | Made an optional exit path and removed decrementing of reference counters file: [3133466dff] check-in: [ec17efd4bb] user: rkeene, branch: trunk, size: 41380 [annotate] [blame] [check-ins using] [diff] | |
06:13 | Updated to decrement reference count for objects as we are done with them file: [4a8cebc0f0] check-in: [651fd8051a] user: rkeene, branch: trunk, size: 40684 [annotate] [blame] [check-ins using] [diff] | |
05:20 | Added back completely needed operation file: [cb5c5230cc] check-in: [84483d5933] user: rkeene, branch: trunk, size: 40381 [annotate] [blame] [check-ins using] [diff] | |
04:19 | Fixed signed-ness issue and removed unessecary operation file: [293b50199a] check-in: [d43f3e4da3] user: rkeene, branch: trunk, size: 40354 [annotate] [blame] [check-ins using] [diff] | |
04:05 | Tweaked hashing algorithm, added destructor for threads so that as threads terminate they are cleaned up file: [6216c87bde] check-in: [770584ac09] user: rkeene, branch: trunk, size: 40372 [annotate] [blame] [check-ins using] [diff] | |
2014-11-12
| ||
05:54 | Updated to call Tcl_Preserve/Tcl_Release as appropriate file: [e49bb6021f] check-in: [d9f1a05711] user: rkeene, branch: trunk, size: 39050 [annotate] [blame] [check-ins using] [diff] | |
05:46 | Fixed actual problem with interruptions (which was really unrelated) -- Tcl notifier thread is terminated on fork() called by fuse_main(), since we create a Tcl interpreter for testing before calling fuse_main() the notifier dies and is not restarted. We now terminate it before fork(). file: [3ceaeb1976] check-in: [0819a7a89c] user: rkeene, branch: trunk, size: 38500 [annotate] [blame] [check-ins using] [diff] | |
05:09 | Removed interruption support, there is no clean way to implement it file: [30750361ba] check-in: [39025b67ed] user: rkeene, branch: trunk, size: 38466 [annotate] [blame] [check-ins using] [diff] | |
2014-11-11
| ||
19:10 | Added SIGUSR1 handling for terminating a thread file: [843bfcfd7e] check-in: [6eb9af02d5] user: rkeene, branch: trunk, size: 38819 [annotate] [blame] [check-ins using] [diff] | |
17:48 | Updated to not continue to reset interpreters forever after a restart request file: [65feda12d8] check-in: [65a6138eb6] user: rkeene, branch: trunk, size: 38365 [annotate] [blame] [check-ins using] [diff] | |
17:43 | Added support for hot-restart of AppFSd on SIGUP file: [2fbbb1d1a2] check-in: [b6ea13d9c3] user: rkeene, branch: trunk, size: 38202 [annotate] [blame] [check-ins using] [diff] | |
2014-11-10
| ||
20:09 | Updated to include attribute caching since we now disable all FUSE attribute caching file: [5e5056a24c] check-in: [89eabdaec1] user: rkeene, branch: trunk, size: 36804 [annotate] [blame] [check-ins using] [diff] | |
07:17 | Updated to not attempt to drop the reference count on the last home directory object until we're about to actually give up the reference file: [a0dcafd0c9] check-in: [f6ecb0ed91] user: rkeene, branch: trunk, size: 30899 [annotate] [blame] [check-ins using] [diff] | |
07:11 | Updated ownership/group and disabled all caching so that things are consistent (and slow!) file: [7148f823cb] check-in: [6e3b24c68c] user: rkeene, branch: trunk, size: 30899 [annotate] [blame] [check-ins using] [diff] | |
06:47 | Made home directory part user-servicable via config file file: [126129663c] check-in: [dde1c0a38d] user: rkeene, branch: trunk, size: 30857 [annotate] [blame] [check-ins using] [diff] | |
05:30 | Simplified user fsuid switching file: [1dcdd9bb28] check-in: [9562d42ae1] user: rkeene, branch: tcl-ops, size: 30267 [annotate] [blame] [check-ins using] [diff] | |
05:02 | Minor re-ordering so that FUSE things can be "near" each other file: [405b834b47] check-in: [f4e6b62dfb] user: rkeene, branch: tcl-ops, size: 30786 [annotate] [blame] [check-ins using] [diff] | |
04:52 | Added initial PKI support file: [423ee145a2] check-in: [9279433b2f] user: rkeene, branch: tcl-ops, size: 30786 [annotate] [blame] [check-ins using] [diff] | |
04:22 | More work towards getting the user multiplexing right file: [d452ee8ca8] check-in: [d3bb0824ec] user: rkeene, branch: tcl-ops, size: 30362 [annotate] [blame] [check-ins using] [diff] | |
03:34 | Updated to cache last home directory looked up and to setfsuid()/setfsgid() before accessing the filesystem so that we may be the right user file: [9cae19dbb7] check-in: [63e41c262c] user: rkeene, branch: tcl-ops, size: 29395 [annotate] [blame] [check-ins using] [diff] | |
03:11 | Nearly completely working write support file: [227a45ec34] check-in: [2160c4189b] user: rkeene, branch: tcl-ops, size: 27472 [annotate] [blame] [check-ins using] [diff] | |
2014-11-09
| ||
09:04 | More work towards a writable solution file: [070b2bd8e3] check-in: [1adf504f9a] user: rkeene, branch: tcl-ops, size: 26591 [annotate] [blame] [check-ins using] [diff] | |
08:01 | Added a truncate action file: [6a9a58fb18] check-in: [8ea4ed266f] user: rkeene, branch: tcl-ops, size: 25508 [annotate] [blame] [check-ins using] [diff] | |
07:52 | Began adding support for other types of files as well as added creat() and mknod() support file: [ba1c738961] check-in: [80bcdf4cb8] user: rkeene, branch: tcl-ops, size: 24617 [annotate] [blame] [check-ins using] [diff] | |
02:09 | Updated to create a Tcl interpreter at startup before starting FUSE loop to catch Tcl errors early file: [ade95f924e] check-in: [3c90001701] user: rkeene, branch: tcl-ops, size: 23072 [annotate] [blame] [check-ins using] [diff] | |
2014-11-07
| ||
13:19 | Added more reliable write support file: [c5ca9c2598] check-in: [d836b9fc43] user: rkeene, branch: tcl-ops, size: 21952 [annotate] [blame] [check-ins using] [diff] | |
12:26 | Added basic write support file: [5b32138d43] check-in: [db5fcbef28] user: rkeene, branch: tcl-ops, size: 21884 [annotate] [blame] [check-ins using] [diff] | |
12:13 | Added basic "open" support file: [a228e5eaeb] check-in: [ebbca87b7e] user: rkeene, branch: tcl-ops, size: 21295 [annotate] [blame] [check-ins using] [diff] | |
11:36 | Add "getattr" implementation file: [70718fd2dc] check-in: [d64c2e9bf7] user: rkeene, branch: tcl-ops, size: 20662 [annotate] [blame] [check-ins using] [diff] | |
08:48 | Added basic "getchildren" implementation in Tcl file: [16b07e2510] check-in: [ee13ee5aa4] user: rkeene, branch: tcl-ops, size: 17248 [annotate] [blame] [check-ins using] [diff] | |
07:20 | Converted global variables to not be part of a struct file: [a9240a597b] check-in: [f277407cbc] user: rkeene, branch: tcl-ops, size: 18409 [annotate] [blame] [check-ins using] [diff] | |
07:15 | Clarified --cachedir file: [2188b35dbc] check-in: [684f97bc4e] user: rkeene, branch: tcl-ops, size: 18674 [annotate] [blame] [check-ins using] [diff] | |
07:14 | Added a "--cachedir" option for use when not using FUSE and added the same option to "appfs-cache" file: [9e818b560b] check-in: [ddd31f22a4] user: rkeene, branch: tcl-ops, size: 18565 [annotate] [blame] [check-ins using] [diff] | |
06:52 | Added appropriate subtype file: [b204b9e307] check-in: [8eb7be2398] user: rkeene, branch: tcl-ops, size: 17951 [annotate] [blame] [check-ins using] [diff] | |
06:48 | More work towards adding support for automatic options file: [99b621ee4d] check-in: [317348f60e] user: rkeene, branch: tcl-ops, size: 17936 [annotate] [blame] [check-ins using] [diff] | |
06:47 | Added start of supplying default options file: [71ddae3095] check-in: [a7e9dac6ce] user: rkeene, branch: tcl-ops, size: 17823 [annotate] [blame] [check-ins using] [diff] | |
06:14 | Added comments file: [616c3164a5] check-in: [83dcb7cd52] user: rkeene, branch: tcl-ops, size: 17514 [annotate] [blame] [check-ins using] [diff] | |
05:06 | Updated to include a Tcl interface via AppFSd file: [e20407f29f] check-in: [4b04c967f7] user: rkeene, branch: tcl-ops, size: 13983 [annotate] [blame] [check-ins using] [diff] | |
04:52 | Added support for an "appfs-cache" script calling sqlite3 directly in appfsd file: [206ee97d58] check-in: [c374111c37] user: rkeene, branch: tcl-ops, size: 13895 [annotate] [blame] [check-ins using] [diff] | |
2014-11-06
| ||
18:29 | Minor update file: [169ff6cab0] check-in: [5bd7399e05] user: rkeene, branch: tcl-ops, size: 12948 [annotate] [blame] [check-ins using] [diff] | |
17:11 | Work towards gutting AppFSd to rewrite file: [8dc47d059d] check-in: [aca3a93d56] user: rkeene, branch: tcl-ops, size: 12966 [annotate] [blame] [check-ins using] [diff] | |
16:20 | Merged in internal_sha1 branch since we should use that as the basis going forward file: [a8794a7145] check-in: [5ffd966f05] user: rkeene, branch: tcl-ops, size: 27158 [annotate] [blame] [check-ins using] [diff] | |
03:05 | Updated to use package name instead of hash for looking up extra files file: [251c8531b4] check-in: [98449bcf3e] user: rkeene, branch: trunk, size: 26692 [annotate] [blame] [check-ins using] [diff] | |
02:49 | Updated to indicate only that packaged files are writable file: [430cff4a7a] check-in: [97e72202db] user: rkeene, branch: trunk, size: 25657 [annotate] [blame] [check-ins using] [diff] | |
02:29 | Updated to use C-based implementation of SHA1 file: [f25bb5c801] check-in: [853a9068a7] user: rkeene, branch: internal_sha1, size: 25894 [annotate] [blame] [check-ins using] [diff] | |
2014-11-05
| ||
21:41 | Added "package" command back, needed for older versions of "http" package file: [72840611b5] check-in: [b1167b6699] user: rkeene, branch: trunk, size: 25428 [annotate] [blame] [check-ins using] [diff] | |
18:39 | Updated to hide commands which are not used and may cause slow-ness file: [7ccc07ce2d] check-in: [c3c642f5c8] user: rkeene, branch: trunk, size: 25476 [annotate] [blame] [check-ins using] [diff] | |
2014-11-03
| ||
23:19 | Deleted: Updated packages branch to be a completely isolated branch check-in: [6136db979d] user: rkeene, branch: packages, size: 0 | |
19:07 | Updated to not crash upon Tcl initialization failure file: [e3ba0e89d2] check-in: [85c5ea8446] user: rkeene, branch: trunk, size: 24974 [annotate] [blame] [check-ins using] [diff] | |
2014-10-12
| ||
02:54 | Added start of writability file: [5ba05dc7d6] check-in: [5c1bbda2c6] user: rkeene, branch: trunk, size: 24800 [annotate] [blame] [check-ins using] [diff] | |
2014-09-18
| ||
17:48 | Updated to only emit debugging output for debugging builds file: [4990aac269] check-in: [ddfec93915] user: rkeene, branch: trunk, size: 22255 [annotate] [blame] [check-ins using] [diff] | |
17:32 | Added inode support (computed, for now) and fixed a memory leak file: [45ff02ebc8] check-in: [dd6c402d76] user: rkeene, branch: trunk, size: 22198 [annotate] [blame] [check-ins using] [diff] | |
05:14 | Added support for a "platform" symlink pointing to the current platform file: [7ee6ccc5a2] check-in: [7ef423f980] user: rkeene, branch: trunk, size: 21506 [annotate] [blame] [check-ins using] [diff] | |
2014-09-13
| ||
05:15 | Updated to commit package change as a single transaction file: [f1b76341ae] check-in: [86819aa4e1] user: rkeene, branch: trunk, size: 20435 [annotate] [blame] [check-ins using] [diff] | |
2014-09-11
| ||
19:57 | Added symlink support file: [56848bb56b] check-in: [859535511c] user: rkeene, branch: trunk, size: 20435 [annotate] [blame] [check-ins using] [diff] | |
2014-09-10
| ||
07:52 | Implemented basic close mechanism file: [343214a386] check-in: [e236f4717a] user: rkeene, branch: trunk, size: 19120 [annotate] [blame] [check-ins using] [diff] | |
07:47 | Removed dead code file: [3805f48036] check-in: [fdd60b8c90] user: rkeene, branch: trunk, size: 18898 [annotate] [blame] [check-ins using] [diff] | |
07:22 | Renamed appfs.c → appfsd.c. Renamed fuse daemon as "appfsd" file: [2342477e32] check-in: [0e19d8e3c2] user: rkeene, branch: trunk, size: 21363 [annotate] [blame] [check-ins using] [diff] | |
04:02 | Reorganized file: [c11522a03a] check-in: [1f01cf90b5] user: rkeene, branch: trunk, size: 23096 [annotate] [blame] [check-ins using] [diff] | |
04:01 | Reduced redundant code file: [3c07efd857] check-in: [041086f3fb] user: rkeene, branch: trunk, size: 23096 [annotate] [blame] [check-ins using] [diff] | |
2014-09-09
| ||
08:23 | Added a default time to psuedo entries file: [799a556739] check-in: [ef5acff5c9] user: rkeene, branch: trunk, size: 24618 [annotate] [blame] [check-ins using] [diff] | |
08:19 | Updated to keep track of the upstream OS name and CPU file: [4cd4495e1d] check-in: [ed608e7fee] user: rkeene, branch: trunk, size: 24353 [annotate] [blame] [check-ins using] [diff] | |
07:33 | Updated to create separate interpreters per thread file: [9a50e0345b] check-in: [cf4ca88d48] user: rkeene, branch: trunk, size: 24299 [annotate] [blame] [check-ins using] [diff] | |
06:46 | Implemented basic open() and read() file: [4ed6fa78a6] check-in: [a7c7a7a363] user: rkeene, branch: trunk, size: 23773 [annotate] [blame] [check-ins using] [diff] | |
06:10 | Added executable bit file: [62dbc078fa] check-in: [99c9d35a89] user: rkeene, branch: trunk, size: 22291 [annotate] [blame] [check-ins using] [diff] | |
06:01 | Updated with basic functionality file: [fb14cea935] check-in: [f66a795908] user: rkeene, branch: trunk, size: 22054 [annotate] [blame] [check-ins using] [diff] | |
03:51 | Updated to supply valid linked list for children and added readdir implementation file: [190e7becb3] check-in: [f31f4f56c6] user: rkeene, branch: trunk, size: 12143 [annotate] [blame] [check-ins using] [diff] | |
03:43 | More work on getting children processed file: [0c5019ef32] check-in: [b437874cfb] user: rkeene, branch: trunk, size: 11774 [annotate] [blame] [check-ins using] [diff] | |
2014-09-08
| ||
07:17 | More work towards parsing directory entries file: [4d722642c3] check-in: [85bda525b9] user: rkeene, branch: trunk, size: 10204 [annotate] [blame] [check-ins using] [diff] | |
06:48 | More work towards reading package data file: [e4290f9d3b] check-in: [e37bc482a9] user: rkeene, branch: trunk, size: 9595 [annotate] [blame] [check-ins using] [diff] | |
06:12 | Updated to print packages file: [0ffa90a2b2] check-in: [654957c655] user: rkeene, branch: trunk, size: 8253 [annotate] [blame] [check-ins using] [diff] | |
04:34 | More work towards SQLite3 integration file: [d2a493f839] check-in: [76ac4557f6] user: rkeene, branch: trunk, size: 6492 [annotate] [blame] [check-ins using] [diff] | |
04:25 | Working on creating an SQLite interface file: [8a456b75d5] check-in: [676f99c72e] user: rkeene, branch: trunk, size: 6052 [annotate] [blame] [check-ins using] [diff] | |
03:18 | More rework file: [4ce583b799] check-in: [ebf9995a42] user: rkeene, branch: trunk, size: 5816 [annotate] [blame] [check-ins using] [diff] | |
02:55 | Removed warnings file: [09f9ed7337] check-in: [eed618f01c] user: rkeene, branch: trunk, size: 5443 [annotate] [blame] [check-ins using] [diff] | |
02:33 | Updated to populate SQLite database with all package data file: [4b3327c544] check-in: [48a551bede] user: rkeene, branch: trunk, size: 5425 [annotate] [blame] [check-ins using] [diff] | |
01:24 | More work on basics file: [1eae70cf2b] check-in: [a189f64907] user: rkeene, branch: trunk, size: 4846 [annotate] [blame] [check-ins using] [diff] | |
2014-09-07
| ||
10:44 | Working on making the Tcl result usable by C file: [c35d6d98f1] check-in: [9b31b33a93] user: rkeene, branch: trunk, size: 4847 [annotate] [blame] [check-ins using] [diff] | |
10:38 | Updated to use Tcl to do all the heavy lifting file: [8303f7df05] check-in: [1ef1b92a15] user: rkeene, branch: trunk, size: 4835 [annotate] [blame] [check-ins using] [diff] | |
06:42 | Updated to use PKG_CONFIG file: [566a5d022c] check-in: [777947ec3d] user: rkeene, branch: trunk, size: 1128 [annotate] [blame] [check-ins using] [diff] | |
06:36 | Added: Added start of appfs file: [c3eac4ab1b] check-in: [40155f7235] user: rkeene, branch: trunk, size: 1157 [annotate] [blame] [check-ins using] | |