)]}'
{"id":"depot~3535","triplet_id":"depot~canon~I15b64a1ea69953c95dc3239ef5860623652b3089","project":"depot","branch":"canon","attention_set":{},"removed_from_attention_set":{"1000034":{"account":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"last_update":"2021-10-02 18:24:12.000000000","reason":"sterni replied on the change"},"1000001":{"account":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"last_update":"2021-10-02 16:52:23.000000000","reason":"removed on reply"},"1000013":{"account":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"last_update":"2021-10-02 18:24:49.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I15b64a1ea69953c95dc3239ef5860623652b3089","subject":"feat(nix/utils): expose pathType of symlink target","status":"MERGED","created":"2021-09-11 16:55:10.000000000","updated":"2021-10-02 18:26:53.000000000","submitted":"2021-10-02 18:24:49.000000000","submitter":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"total_comment_count":12,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"3535","meta_rev_id":"2c276a7dc279fd1d1a3d72d9421f974e8e7239c3","_number":3535,"virtual_id_number":3535,"owner":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"actions":{},"labels":{"Code-Review":{"approved":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"tag":"autogenerated:gerrit:merged","value":2,"date":"2021-10-02 18:24:49.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2021-10-02 18:24:49.000000000","permitted_voting_range":{"min":1,"max":2},"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}],"values":{"-2":"This shall not be merged","-1":"I would prefer this is not merged as is"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0},"Verified":{"approved":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2021-10-02 18:24:49.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Autosubmit":{"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}],"values":{" 0":"Submit manually","+1":"Submit automatically"},"description":"","default_value":0,"optional":true},"All-Comments-Resolved":{"approved":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}]},"Conformant-Commit-Message":{"approved":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}]}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-09-11 16:56:22.000000000","updated_by":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2021-09-11 16:59:36.000000000","updated_by":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"reviewer":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"state":"REVIEWER"},{"updated":"2021-09-11 16:59:36.000000000","updated_by":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"reviewer":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"state":"REVIEWER"}],"messages":[{"id":"ded6f1b6b09967ef5c6ca5d957b4e95582c8d002","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-11 16:55:10.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"dae609a284a5423289f7109f5a8621b44e070fca","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-11 16:56:10.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"12aad4276636ceb2c8136df053916ffeb46fe7be","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-11 16:56:22.000000000","message":"Patch Set 1: Verified+1\n\nBuild of patchset 1 passed: https://buildkite.com/tvl/depot/builds/8386","accounts_in_message":[],"_revision_number":1},{"id":"b79a40c33c6ffe1189e8597f3c87c50ccddebc2e","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-11 16:57:26.000000000","message":"Patch Set 2: Verified+1\n\nBuild of patchset 2 passed: https://buildkite.com/tvl/depot/builds/8387","accounts_in_message":[],"_revision_number":2},{"id":"df208b02dafa68611a855065f10a0e31a4933e48","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-11 16:57:51.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"547ead22b90c5f858700517b8be9098a85efe0c9","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-11 16:59:07.000000000","message":"Patch Set 3: Verified+1\n\nBuild of patchset 3 passed: https://buildkite.com/tvl/depot/builds/8388","accounts_in_message":[],"_revision_number":3},{"id":"dd4fea37d104fb1629e121dfa6943d1b050c0915","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-11 18:37:03.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"b15066bef8a2d971913cf2faacd86d74b207a432","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-11 18:38:20.000000000","message":"Patch Set 4: Verified+1\n\nBuild of patchset 4 passed: https://buildkite.com/tvl/depot/builds/8390","accounts_in_message":[],"_revision_number":4},{"id":"3042009933997894e584745d84de3038d0f86900","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-09-13 09:55:23.000000000","message":"Patch Set 4: Code-Review+1\n\n(4 comments)","accounts_in_message":[],"_revision_number":4},{"id":"af066de3a8632f714ccf9bbe01859aa4da7e7666","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-14 14:05:18.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"5e0f3c221bd4595b7cd2ce67cb4de9d391366255","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-14 14:06:43.000000000","message":"Patch Set 5: Verified+1\n\nBuild of patchset 5 passed: https://buildkite.com/tvl/depot/builds/8416","accounts_in_message":[],"_revision_number":5},{"id":"cf1c364a2991c5142e6fab95565f99b605322d2a","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-14 14:07:18.000000000","message":"Patch Set 5:\n\n(2 comments)","accounts_in_message":[],"_revision_number":5},{"id":"fa26330e4f6da7707c5f33418332dc40dda388d5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-14 14:24:21.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.","accounts_in_message":[],"_revision_number":6},{"id":"e7a868c83d597b50895755ea7a158094bd48cb5d","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-14 14:25:39.000000000","message":"Patch Set 6: Verified+1\n\nBuild of patchset 6 passed: https://buildkite.com/tvl/depot/builds/8423","accounts_in_message":[],"_revision_number":6},{"id":"11f8cb14d6d3e28aec85193b8ac5a5c7d468a8c3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-14 14:47:23.000000000","message":"Uploaded patch set 7.","accounts_in_message":[],"_revision_number":7},{"id":"e69113543b0f85b86ae755542ac126e14eeb3133","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-14 14:48:44.000000000","message":"Patch Set 7: Verified+1\n\nBuild of patchset 7 passed: https://buildkite.com/tvl/depot/builds/8427","accounts_in_message":[],"_revision_number":7},{"id":"326ac2c87aed9fb9415763313a5fe49452fe1383","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-15 00:11:26.000000000","message":"Uploaded patch set 8: Patch Set 7 was rebased.","accounts_in_message":[],"_revision_number":8},{"id":"627adbfcc5e7931dc386f29bb24b18bbd6715e3c","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-15 00:13:41.000000000","message":"Patch Set 8: Verified+1\n\nBuild of patchset 8 passed: https://buildkite.com/tvl/depot/builds/8438","accounts_in_message":[],"_revision_number":8},{"id":"92e2c604ec691a06b1871ebb962de44019feca97","tag":"autogenerated:gerrit:setReadyForReview","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-15 10:25:40.000000000","message":"Set Ready For Review","accounts_in_message":[],"_revision_number":8},{"id":"9e407b97141e80aeedda3dc57d277ed6cd6aca5d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-15 12:05:17.000000000","message":"Uploaded patch set 9: New patch set was added with same tree, parent, and commit message as Patch Set 8.","accounts_in_message":[],"_revision_number":9},{"id":"dd80d777b81fdc8058c64cfff32a414c4358c9ef","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-15 12:06:39.000000000","message":"Patch Set 9: Verified+1\n\nBuild of patchset 9 passed: https://buildkite.com/tvl/depot/builds/8456","accounts_in_message":[],"_revision_number":9},{"id":"a465b3a8436460d2e49786531d233519fdaad467","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-15 12:48:12.000000000","message":"Uploaded patch set 10: Patch Set 9 was rebased.","accounts_in_message":[],"_revision_number":10},{"id":"621fbd30f95c1bd3cf9b86f74a331f8819e3b4b1","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-15 12:50:24.000000000","message":"Patch Set 10: Verified+1\n\nBuild of patchset 10 passed: https://buildkite.com/tvl/depot/builds/8484","accounts_in_message":[],"_revision_number":10},{"id":"23fb4ad2b69d67fdb1b79ba176369dee99a225f7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-15 22:44:07.000000000","message":"Uploaded patch set 11: Patch Set 10 was rebased.","accounts_in_message":[],"_revision_number":11},{"id":"029e1be9e6d4baa61022fa50e118f78eeea917da","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-15 22:45:27.000000000","message":"Patch Set 11: Verified+1\n\nBuild of patchset 11 passed: https://buildkite.com/tvl/depot/builds/8509","accounts_in_message":[],"_revision_number":11},{"id":"619ca9a9c774a543392c3f7fedbb37544222ef56","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-09-17 08:36:05.000000000","message":"Patch Set 11: Code-Review+1\n\n(2 comments)","accounts_in_message":[],"_revision_number":11},{"id":"429ddbcfde057a68cd344ceaec2efb4245abe551","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-17 11:49:07.000000000","message":"Uploaded patch set 12: Patch Set 11 was rebased.","accounts_in_message":[],"_revision_number":12},{"id":"9b4741b739279415e20e6e6d20225d728d9723cf","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-09-17 11:51:15.000000000","message":"Patch Set 12: Verified+1\n\nBuild of patchset 12 passed: https://buildkite.com/tvl/depot/builds/8550","accounts_in_message":[],"_revision_number":12},{"id":"189839d406d036fecb3978ac39d34ca88f7fe6b2","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-18 12:44:40.000000000","message":"Patch Set 12:\n\n(1 comment)","accounts_in_message":[],"_revision_number":12},{"id":"c661aa8adcc4b6af40f4ed53a3b50ddad82f575b","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-09-20 12:58:50.000000000","message":"Patch Set 12: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":12},{"id":"ffb46cae14b123ee42eadd871135cc7be35723f3","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-09-20 13:27:42.000000000","message":"Patch Set 12:\n\n(1 comment)","accounts_in_message":[],"_revision_number":12},{"id":"da0d0f46ed43ca45715455c37feda9c1a890ef19","author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"date":"2021-10-02 16:52:23.000000000","message":"Patch Set 12: Code-Review+2","accounts_in_message":[],"_revision_number":12},{"id":"363e2c86c3f6856c3740eb9ae90991877f12dcea","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-10-02 18:24:12.000000000","message":"Patch Set 12:\n\n(1 comment)","accounts_in_message":[],"_revision_number":12},{"id":"c223075f048cfa3fdb18bd759d758d8627b1c23c","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-10-02 18:24:49.000000000","message":"Change has been successfully rebased and submitted as 66fa718cebb4808a95c17e7ee692cf8e5dc87653","accounts_in_message":[],"_revision_number":13},{"id":"5f896ebe373d6b2cdb91bf7ce2929926851bbaff","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-10-02 18:24:50.000000000","message":"Patch Set 13:\n\nStarted build for patchset #13 of cl/3535: https://buildkite.com/tvl/depot/builds/8772","accounts_in_message":[],"_revision_number":13},{"id":"2c276a7dc279fd1d1a3d72d9421f974e8e7239c3","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-10-02 18:26:53.000000000","message":"Patch Set 13:\n\nBuild of patchset 13 passed: https://buildkite.com/tvl/depot/builds/8772","accounts_in_message":[],"_revision_number":13}],"current_revision_number":13,"current_revision":"66fa718cebb4808a95c17e7ee692cf8e5dc87653","revisions":{"c470d0707048c75a609cbf103fa6b6a9dc0d5d3f":{"kind":"REWORK","_number":1,"created":"2021-09-11 16:55:10.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/1","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/1","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/1"}}},"commit":{"parents":[{"commit":"9336872ff355b76be8f3a6f1193f942cd8b3d94f","subject":"test(nix/utils): unit test path predicates","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d9336872ff355b76be8f3a6f1193f942cd8b3d94f"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc470d0707048c75a609cbf103fa6b6a9dc0d5d3f"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc470d0707048c75a609cbf103fa6b6a9dc0d5d3f"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"9336872ff355b76be8f3a6f1193f942cd8b3d94f","is_merged_in_target_branch":false,"change_id":"I85f38ef8f284c4accd1ea744f61358622785358d","change_number":3534,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"a17eaf9466b57f4cb37b51c790731730fe3ca85e":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2021-09-11 16:56:10.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/2","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/2","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/2"}}},"commit":{"parents":[{"commit":"9336872ff355b76be8f3a6f1193f942cd8b3d94f","subject":"test(nix/utils): unit test path predicates","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d9336872ff355b76be8f3a6f1193f942cd8b3d94f"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:55:29.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003da17eaf9466b57f4cb37b51c790731730fe3ca85e"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003da17eaf9466b57f4cb37b51c790731730fe3ca85e"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"9336872ff355b76be8f3a6f1193f942cd8b3d94f","is_merged_in_target_branch":false,"change_id":"I85f38ef8f284c4accd1ea744f61358622785358d","change_number":3534,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"d9dac6f066b81e5692150bae1267f5d66dd37814":{"kind":"REWORK","_number":3,"created":"2021-09-11 16:57:51.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/3","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/3","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/3"}}},"commit":{"parents":[{"commit":"9336872ff355b76be8f3a6f1193f942cd8b3d94f","subject":"test(nix/utils): unit test path predicates","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d9336872ff355b76be8f3a6f1193f942cd8b3d94f"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:57:40.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd9dac6f066b81e5692150bae1267f5d66dd37814"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd9dac6f066b81e5692150bae1267f5d66dd37814"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"9336872ff355b76be8f3a6f1193f942cd8b3d94f","is_merged_in_target_branch":false,"change_id":"I85f38ef8f284c4accd1ea744f61358622785358d","change_number":3534,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"f7b501f08c8a56707f620a1471ada4e3bb2f0b4e":{"kind":"REWORK","_number":4,"created":"2021-09-11 18:37:03.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/4","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/4","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/4"}}},"commit":{"parents":[{"commit":"9336872ff355b76be8f3a6f1193f942cd8b3d94f","subject":"test(nix/utils): unit test path predicates","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d9336872ff355b76be8f3a6f1193f942cd8b3d94f"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 18:37:01.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003df7b501f08c8a56707f620a1471ada4e3bb2f0b4e"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003df7b501f08c8a56707f620a1471ada4e3bb2f0b4e"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"9336872ff355b76be8f3a6f1193f942cd8b3d94f","is_merged_in_target_branch":false,"change_id":"I85f38ef8f284c4accd1ea744f61358622785358d","change_number":3534,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"053b313e2b0bcf220b2881e7298524801047006a":{"kind":"REWORK","_number":5,"created":"2021-09-14 14:05:18.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/5","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/5","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/5"}}},"commit":{"parents":[{"commit":"447444c610ce21c87900afa55c5820a1b3c465c9","subject":"test(nix/utils): unit test path predicates","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d447444c610ce21c87900afa55c5820a1b3c465c9"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-14 14:05:17.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d053b313e2b0bcf220b2881e7298524801047006a"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d053b313e2b0bcf220b2881e7298524801047006a"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"447444c610ce21c87900afa55c5820a1b3c465c9","is_merged_in_target_branch":false,"change_id":"I85f38ef8f284c4accd1ea744f61358622785358d","change_number":3534,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"a6d03e08760912093855dc7251375aa26345c490":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2021-09-14 14:24:21.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/6","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/6","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/6"}}},"commit":{"parents":[{"commit":"4ebab80b5a026cc15c57f5a0eafa5e1af053f0c9","subject":"test(nix/utils): unit test path predicates","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d4ebab80b5a026cc15c57f5a0eafa5e1af053f0c9"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-14 14:17:58.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003da6d03e08760912093855dc7251375aa26345c490"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003da6d03e08760912093855dc7251375aa26345c490"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"4ebab80b5a026cc15c57f5a0eafa5e1af053f0c9","is_merged_in_target_branch":true,"change_id":"I85f38ef8f284c4accd1ea744f61358622785358d","change_number":3534,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"922c3792ec0ce58e1e9bedc59214c851f3d1a16b":{"kind":"REWORK","_number":7,"created":"2021-09-14 14:47:23.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/7","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/7","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/7"}}},"commit":{"parents":[{"commit":"e07a8d366dd78e1062e8116bb9383d168efab120","subject":"test(nix/utils): unit test storePathName","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003de07a8d366dd78e1062e8116bb9383d168efab120"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-14 14:47:18.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d922c3792ec0ce58e1e9bedc59214c851f3d1a16b"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d922c3792ec0ce58e1e9bedc59214c851f3d1a16b"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"e07a8d366dd78e1062e8116bb9383d168efab120","is_merged_in_target_branch":false,"change_id":"I4208cf9e3c5e1d922ee5b5bffd034e4ac6d0e2c0","change_number":3543,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"58f34b3a2f32ac836464506d66e4a89c54632704":{"kind":"TRIVIAL_REBASE","_number":8,"created":"2021-09-15 00:11:26.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/8","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/8","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/8"}}},"commit":{"parents":[{"commit":"e2270f8d1ec212746fad4a38c676a187ee0c00ed","subject":"test(nix/utils): unit test storePathName","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003de2270f8d1ec212746fad4a38c676a187ee0c00ed"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-15 00:11:20.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d58f34b3a2f32ac836464506d66e4a89c54632704"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d58f34b3a2f32ac836464506d66e4a89c54632704"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"e2270f8d1ec212746fad4a38c676a187ee0c00ed","is_merged_in_target_branch":false,"change_id":"I4208cf9e3c5e1d922ee5b5bffd034e4ac6d0e2c0","change_number":3543,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"72d989c18b1dbfb21a05f7d50293293c73587a8e":{"kind":"NO_CHANGE","_number":9,"created":"2021-09-15 12:05:17.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/9","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/9","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/9"}}},"commit":{"parents":[{"commit":"d5f24b5fa4eb3b3340accf8ddaa6242fa2ab5a0e","subject":"test(nix/utils): unit test storePathName","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd5f24b5fa4eb3b3340accf8ddaa6242fa2ab5a0e"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-15 12:05:12.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d72d989c18b1dbfb21a05f7d50293293c73587a8e"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d72d989c18b1dbfb21a05f7d50293293c73587a8e"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"d5f24b5fa4eb3b3340accf8ddaa6242fa2ab5a0e","is_merged_in_target_branch":false,"change_id":"I4208cf9e3c5e1d922ee5b5bffd034e4ac6d0e2c0","change_number":3543,"patch_set_number":4,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"c3c52a8f2e3e13bd023fb2ec905ecad07d23c17b":{"kind":"TRIVIAL_REBASE","_number":10,"created":"2021-09-15 12:48:12.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/10","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/10","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/10"}}},"commit":{"parents":[{"commit":"9df017831f8905068f386bf72e881e28b6fb5d07","subject":"test(nix/utils): unit test storePathName","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d9df017831f8905068f386bf72e881e28b6fb5d07"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-15 12:39:56.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc3c52a8f2e3e13bd023fb2ec905ecad07d23c17b"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc3c52a8f2e3e13bd023fb2ec905ecad07d23c17b"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"9df017831f8905068f386bf72e881e28b6fb5d07","is_merged_in_target_branch":false,"change_id":"I4208cf9e3c5e1d922ee5b5bffd034e4ac6d0e2c0","change_number":3543,"patch_set_number":5,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"3eda01fcb1f3b538fba9ccd4ef402451a105bb68":{"kind":"TRIVIAL_REBASE","_number":11,"created":"2021-09-15 22:44:07.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/11","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/11","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/11"}}},"commit":{"parents":[{"commit":"c56e57b22a8b7eae82a1f1f56983e58b8ed3af3b","subject":"test(nix/utils): unit test storePathName","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc56e57b22a8b7eae82a1f1f56983e58b8ed3af3b"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-15 22:40:08.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d3eda01fcb1f3b538fba9ccd4ef402451a105bb68"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d3eda01fcb1f3b538fba9ccd4ef402451a105bb68"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"c56e57b22a8b7eae82a1f1f56983e58b8ed3af3b","is_merged_in_target_branch":false,"change_id":"I4208cf9e3c5e1d922ee5b5bffd034e4ac6d0e2c0","change_number":3543,"patch_set_number":6,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"ff5adfb0b9a8a762ac60dd9393a598f73fad3c8e":{"kind":"TRIVIAL_REBASE","_number":12,"created":"2021-09-17 11:49:07.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/12","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/12","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/12"}}},"commit":{"parents":[{"commit":"5dec98233482ebd651f9be77984a178d6656efe4","subject":"refactor(nix/runTestsuite): clean up runTestsuite","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d5dec98233482ebd651f9be77984a178d6656efe4"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-17 11:49:05.000000000","tz":120},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dff5adfb0b9a8a762ac60dd9393a598f73fad3c8e"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dff5adfb0b9a8a762ac60dd9393a598f73fad3c8e"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"5dec98233482ebd651f9be77984a178d6656efe4","is_merged_in_target_branch":true,"change_id":"I70cf4fa3f61ce1467a2ee5319f841cdd42db6a66","change_number":3548,"patch_set_number":8,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"66fa718cebb4808a95c17e7ee692cf8e5dc87653":{"kind":"REWORK","_number":13,"created":"2021-10-02 18:24:49.000000000","uploader":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"ref":"refs/changes/35/3535/13","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/35/3535/13","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/35/3535/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/35/3535/13"}}},"commit":{"parents":[{"commit":"0eef0e343f6ac3b7afbe7f6895fce8b5d20d3b3a","subject":"feat(whitby): serve static.tvl.{fyi|su} with max cache settings","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d0eef0e343f6ac3b7afbe7f6895fce8b5d20d3b3a"}]}],"author":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-09-11 16:47:18.000000000","tz":120},"committer":{"name":"sterni","email":"sternenseemann@systemli.org","date":"2021-10-02 18:24:49.000000000","tz":0},"subject":"feat(nix/utils): expose pathType of symlink target","message":"feat(nix/utils): expose pathType of symlink target\n\nIn order to make readTree import symlinked directories I\u0027ve been looking\ninto how to detect if a symlink points to a directory (since this would\nallow us to use symlinks for //nix/sparseTree). I\u0027ve found a hack for\nthis:\n\n    symlinkPointsToDir \u003d path: isSymlink path \u0026\u0026\n      builtins.pathExists (toString path + \"/.\")\n\nUnfortunately it doesn\u0027t seem to be possible to distinguish whether the\nsymlink target does not exist or is a regular file.\n\nSince it\u0027s possible, I thought might as well add this to\n`pathType`. To make returning the extra information workable, I\u0027ve\nelected to use the attribute set layout used by `//nix/tag`. This\ndoesn\u0027t require us to depend anything (as opposed to yants), but gives\nus pattern matching (via `nix.tag.match`) and also quite idiomatic\nchecking of pathTypes:\n\n    pathType ./foo ? file\n    (pathType ./foo).symlink or null \u003d\u003d \"symlink-directory\"\n\nNonexistent paths are encoded like this:\n\n    pathType ./foo ? missing\n\nOf course we can\u0027t use this in readTree (since it must be zero\ndependency), but we can easily inline this hack at some point.\n\nChange-Id: I15b64a1ea69953c95dc3239ef5860623652b3089\nReviewed-on: https://cl.tvl.fyi/c/depot/+/3535\nTested-by: BuildkiteCI\nReviewed-by: Profpatsch \u003cmail@profpatsch.de\u003e\nReviewed-by: tazjin \u003cmail@tazj.in\u003e\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d66fa718cebb4808a95c17e7ee692cf8e5dc87653"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d66fa718cebb4808a95c17e7ee692cf8e5dc87653"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"0eef0e343f6ac3b7afbe7f6895fce8b5d20d3b3a","is_merged_in_target_branch":true,"change_id":"Ib1ca3a1a00c90a47f4bf39c29a8b4bbf5b215e7d","change_number":3664,"patch_set_number":6,"change_status":"MERGED"}],"branch":"refs/heads/canon","description":"Rebase"}},"requirements":[],"submit_records":[{"status":"CLOSED","labels":[{"label":"Code-Review-from-owners","status":"OK","applied_by":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"}},{"label":"Conformant-Commit-Message","status":"OK","applied_by":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"}},{"label":"All-Comments-Resolved","status":"OK","applied_by":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"}},{"label":"Verified","status":"OK","applied_by":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dCustom-Rule"],"failing_atoms":[]}},{"name":"All-Comments-Resolved","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:All-Comments-Resolved\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:All-Comments-Resolved\u003dCustom-Rule"],"failing_atoms":[]}},{"name":"Code-Review-from-owners","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review-from-owners\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review-from-owners\u003dCustom-Rule"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dCustom-Rule"],"failing_atoms":[]}},{"name":"Conformant-Commit-Message","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Conformant-Commit-Message\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Conformant-Commit-Message\u003dCustom-Rule"],"failing_atoms":[]}}]}
