The idea behind Tagsnag is to provide a quick & easy to use cli-tool to extract data for comparison from a similar version over multiple repositories. It was written with educational use in mind: Imagine n groups of students handing in assignments via n Git repositories. The assignments are tagged rather similary and follow the same structure roughly.
$ pip install TagsnagTagsnag uses Python 3.7 and requires Gitpython to be installed. You can install it using the provided Makefile:
$ make initOr manually using pip:
$ pip install gitpythonTo run tagsnag over all repositories in a directory enter the directory via shell. The whole set of commands can be found by calling --help.
| Flag | Description |
|---|---|
-l, --log |
Create a logfile. |
-p, --prune |
Read Git manual. May come in handy if tags are replaced a lot. |
-s, --autostash |
Instead of skipping the untidy repository, stash all changes. |
-u, --update |
Run git checkout master && git pull origin master on all repositories. |
-v, --verbose |
Additional logging. |
| Modes | Necessary Arguments |
|---|---|
| Extract File | tagsnag --tag=<tag> --filename=<name> --extension=<type> |
| Extract Dir | tagsnag --tag=<tag> --directory=<name> |
| Extract via XML | (Deprecated) tagsnag --xml=<path> |
--destination=<name> |
Optional: Name created destination folder |
Run git checkout master && git pull origin master on all repositories:
$ tagsnag --update$ tagsnag --tag=<tag> \
--filename=<filename> \
--extension=<filetype> \
--destination=<destination_path>The following sample will fuzzy search for a tag containing 1.0, check it out and search for a file of type .md containing the string readme in its name. This file will then be copied into the destination folder and be renamed to <repository_name>.md:
$ tagsnag \
--tag=1.0 \
--filename=readme \
--extension=md \
--destination=./ReadmeFilesInstead of a filename, you can provide a directory name to extract. Tagsnag will copy the first directory it finds matching the name starting from root.
$ tagsnag --tag=<tag> \
--directory=<directory_name> \
--destination=<destination_path>- For more configurability you can put an
xmlfile into the folder containing the repos and run it:
$ tagsnag --xml=<path/of/xml_file>- Thomas Johannesmeyer - www.geeky.gent
This project is licensed under the MIT License - see the LICENSE file for details
The framework and code are provided as-is, but if you need help or have suggestions, you can contact me anytime at [email protected].
If you have got any suggestions, please feel free to share them with me. :)