Skip to content

Allow for hierarchical file structures within tagfs #46

@mwatts15

Description

@mwatts15

Motivation

After some reflection, it seems apparent that a user may want to tag file structures that employ information hiding in combination with a tagging file system. As an example, many software packages have a concept of "projects" which consist of multiple files in a tree structure (e.g., Maven). This is a proposal to allow for tagging file hierarchies similarly to single files.

Criteria

Using '@' prefix to designate tags.

  • Hierarchical structures cannot contain tags -- they are terminals in the same way as single files.
  • "Regular" hierarchical directories should be the default to allow for seamless integration with preexisting structures by recursive copy.
  • Interactions within the hierarchical structure should mirror interactions with the underlying file system.
  • Renames of files within a hierarchy to outside the hierarchy should behave the same as if the file had all the tags of its containing hierarchy and was renamed from a path including only the tag components of the original rename source. Examples below:
    • rename("@taga/@tagb/@tagc/a/b/f", "@tagd/f") adds a new file "f" with tags "taga", "tagb", "tagc", "tagd"
    • rename("@taga/@tagb/@tagc/a/b/f", "@taga/f") adds a new file "f" with only tag "taga"
    • rename("@taga/@tagb/@tagc/a/b/f", "@taga/@tagz/f") adds a new file "f" with tags "taga", "tagb", "tagc", "tagz"
  • Renames of files outside of the hierarchy to inside of the hierarchy effectively deletes the source file and creates a file within the hierarchy having the same content and attributes. Whatever tags the file had are not added to the hierarchy.
  • Renames between hierarchies must not involve any changes to tagging
  • The command file system (used for issuing commands to tagfs) should still work within hierarchies
  • DBus file signals must not be sent for file manipulations within a hierarchy

Subtasks

  • Define a textual distinction between tag directories and regular directories
  • Update documentation to reflect the changed behavior
  • Write logic for renames between hiearchy/non-hierarchy

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions