Bug?: git archive exclude pathspec and gitattributes export-ignore
- From
- David Adam <zanchey@ucc.gu.uwa.edu.au>
- Date
- Aug 13, 2017, 04:53 UTC
- Message-ID
- <alpine.DEB.2.11.1708131240360.15538@motsugo.ucc.gu.uwa.edu.au>
Hi all,
I think I have a bug in git (tested 2.11.0 on Debian 8, 2.14.1 on OS X and 2.14.1.145.gb3622a4 on OS X).
Given a repository with an export-ignore directive for a subdirectory in .gitattributes, `git archive` with a pathspec that excludes a different subdirectory produces no output file and git exits with -1 as the return status.
As shown:
> git init foo && cd foo
Initialized empty Git repository in /Users/david/src/foo/.git/
> mkdir a b
> touch {a,b}/somefile
> echo "/a export-ignore" >> .gitattributes
> git add .
> git commit -m "Initial commit"
[master (root-commit) 53527a7] Initial commit
3 files changed, 1 insertion(+)
create mode 100644 .gitattributes
create mode 100644 a/somefile
create mode 100644 b/somefile
> git archive --verbose master ':(top)' ':(exclude)b*'
.gitattributes
> echo $?
255If this is intended behaviour, is there any way of achieving the goal of excluding a subdirectory not listed as export-ignore? Using the exclude pathspec ":(exclude)b" produces an empty subdirectory b in the output, which I would like to avoid.
This is a reduced testcase; my goal is to end up with two archives, one containing directory b only, and one containing everything except for directory b - so I can't just add 'b export-ignore' to gitattributes.
Thanks
David Adam zanchey@ucc.gu.uwa.edu.au