From d877e8f8af81b13765dfd666b8bc8f9936e92816 Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Thu, 24 Jul 2025 11:58:37 -0600 Subject: [PATCH] add comment 7fc0142ef391d3824de29d23ae807f2b on issue dd20d3ddc86ee802fe7b15e2c91dc160 --- .../description | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 dd20d3ddc86ee802fe7b15e2c91dc160/comments/7fc0142ef391d3824de29d23ae807f2b/description diff --git a/dd20d3ddc86ee802fe7b15e2c91dc160/comments/7fc0142ef391d3824de29d23ae807f2b/description b/dd20d3ddc86ee802fe7b15e2c91dc160/comments/7fc0142ef391d3824de29d23ae807f2b/description new file mode 100644 index 0000000..dff86e5 --- /dev/null +++ b/dd20d3ddc86ee802fe7b15e2c91dc160/comments/7fc0142ef391d3824de29d23ae807f2b/description @@ -0,0 +1,49 @@ +We've discussed three options for how to store tags: + +1. Each tag is a line in the file "${ISSUE}/tags". This is what we + use now. + + This one is bad because git conflicts are inevitable when people + add/remove tags near each other. This problem is what's prompting + this whole issue. + +2. Each tag is a file in the directory "${ISSUE}/tags/", with characters + that are illegal in filenames (notably '/') escaped. For example, + the tag "tui/v0.1" would live in "${ISSUE}/tags/tui,1v0.1". + + This one looks a bit weird. + +3. Each tag is a file somewhere under the directory "${ISSUE}/tags/", + and tags that include the character '/' live in subdirectories + matching the tag name. For example, the tag "tui/v0.1" would live in + "${ISSUE}/tags/tui/v0.1". + + I like this option but i'm a bit unsure of how some aspects would + work... + +How should entomologist handle "${ISSUE}/tags/tui/v0.1"? Does this +issue have one tag ("tui/v0.1") or two tags ("tui" and "tui/v0.1")? + +If a user runs `ent tag ${ISSUE} tui/v0.1`, i think it would be a bit +surprising if the issue now has both "tui/v0.1" like they asked for, +and also "tui" which they didn't ask for. But maybe that's just how +hierarchical tags work? + +What happens if the user runs "ent tag ${ISSUE} tui/v0.1", then "ent +tag ${ISSUE} -tui" to remove "tui"? Does entomologist refuse, or does +it also remove "tui/v0.1"? Probably it refuses, again because that's +how hierarchical tags work - you (obviously?) can't have "tui/v0.1" +without also having "tui". + +What happens if the user runs "ent tag ${ISSUE} tui/v0.1", then runs +"ent tag ${ISSUE} -tui/v0.1"? Let's assume "v0.1" is the only file in +the "tags/tui/" directory. Probably we remove the "tags/tui" directory, +and now the issue has no tags? Again a bit surprising imo. + +If a user adds a tag "tui", it creates the file "${ISSUE}/tags/tui". +If the user then adds "tui/v0.1" entomologist will have to delete the +"tui" file and replace it with a "tui/" directory, then add a "v0.1" +file to that directory, but that's no big deal. + +If one user adds the tag "tui", and another user adds the tag(s) +"tui/v0.1", there will be a git conflict on sync.