Add tag in “export-subst” file


We have a git workflow, where all release versions are stacked on the master branch, and when a commit is ready for deployment, we add a tag to it, then use git archive to build a bundle to be deployed.

  • How to step through a git repository?
  • Linking SVN repository trunk as branch for Git repository subfolder
  • Using GCC Through Git Bash
  • ways to improve git status performance
  • BitbucketBackup - Overcome Git fetch non-fast-forward error
  • Git: Find deleted code
  • We use a version.txt file, marked in .gitattributes with the option export-subst, to keep track of which commit was used to build a given archive.


    If I write $Format:%d$ in version.txt, and export a tagged commit, I will have something like (HEAD, tag, master) written in the resulting file.

    How can I have the tag alone ?

    [edit] There is a git command which already produces that :

    git describe --tags HEAD

    This will output :

    latest_tag            #if HEAD is tagged
    latest_tag-5-g03cc91b #if HEAD is not tagged,
                          #and the latest tag is 5 commits ago on commit g03cc91b

    Is there some way to have a slug replaced with this output in version.txt ?

  • Is it possible in Git to only stage files that are staged and modified?
  • Detaching a directory to be modified as a branch elsewere using Git
  • Recovering a Git Mistake
  • Convert Git repos of without .git extention to gitolite repos having .git extension
  • Installing a Plug-in into Eclipse from its source code
  • How to list all tags along with the full message in git?
  • One Solution collect form web for “Add tag in “export-subst” file”

    You could use a content filter driver which would on git checkout automatically do the exact change you want.

    content filter river: smudge

    (From Pro Git book 7.2 Customizing Git – Git Attributes)

    You declare in a .gitattributes file a smudge script which will do the substitution for a special marker (that you want to be replaced with git describe --tags HEAD), without touching the other markers to be modified by export-subst on git archive.

    Then you call git archive, which should (not tested) replace the rest.

    Git Baby is a git and github fan, let's start git clone.