Version control systems are used widely for tracking edits to data files, especially when working in teams with simultaneous editors. They track who made edits and when, and provide tools for comparing changes made and for resolving conflicts when the same file is edited by two people. Attaching metadata to files which stays with the data and tracking changes can be difficult if the file format does not support it. In this paper we present a new and innovative architecture for recording key-value metadata for objects in a revision control system, specifically Git. The utility and maturity of version control system tools make them a good candidate for a metadata store. We take advantage of Git's data store to permit the values to be blobs, opening up other possibilities such as defining thumbnails for files and folders. Propagation rules are presented, detailing when metadata follows a file after modifications to the repository. A prototype version of a tool is presented and the usefulness of the architecture is demonstrated with a number of examples. Adapting the approach to other systems such as Mercurial and Subversion is also discussed.
Scott et al. REF describe an architecture to manage key-value metadata for data elements in a revision control system.
Metagit: Decentralised metadata management with Git
Inf. Syst.
Inf. Syst.
Computer Science