Kentzo/git-archive-all

Advice for exporting starting in a subdirectory

mike-lawrence opened this issue · 1 comments

Very possibly I'm starting from a usage that is non-standard and there's a better way for me to do this, but I have a repo with the file structure:

my_repo
    |- app
        |- my_submodule
        |- other stuff
    |- make_app_zip.sh

Where I have the core code of the repo in the app folder and a shell script that calls git-archive-all at the root of of the repo. I'd like to be able to have a zip where the app folder forms the root of the zip and I've tried both:

git-archive-all -C ./app zipped_app.zip

and

cd app
git-archive-all ../zipped_app.zip

in that shell script, but both seem to yield a zip that has grabbed everything from the repo root down, including the zip shell and the app folder as a subfolder (rather than just the app folder as the root of the zip).

Any suggestions?

The script archives starting from repo's root, -C is here to avoid cd-ing so you can archive /your/repo/path from ~/. Using git-archive-all's CLI alone you cannot have my_repo/app instead of app.

I can suggest two solutions:

  • Switch to tar.* and --strip-component
  • Instead of a shell script write a python script where you can subclass GitArchiver and modify it as needed

You should be able to exclude make_app_zip.sh from the resulting archive: cd repo; echo "make_app_zip.sh export-ignore" >> .gitattributes. You can exclude as many files as you want, see https://git-scm.com/docs/gitattributes#_export_ignore