How is ignore-paths evaluated in git svn?
git, git-svn, ignore, regex
Solution
It seems to match the full path in the SVN repository. This regex, which includes the `trunk`/`tags`/`branches` portion of the SVN path, did the trick:
ignore-paths = ^(trunk|tags/[^/]*|branches/[^/]*)/(doc|misc)/
In words: the path must start with one of:
- `trunk`
- `tags/`, perhaps followed by one path segment (not containing `/`)
- `branches/`, perhaps followed by one path segment (not containing `/`)
... then path segment named `doc` or `misc`.
Problem
I have a simple repo structure like this: ``` trunk code othercode doc misc branches b1 code othercode doc misc b2 tags t1 t2 ``` I'm trying to use `git svn` to clone it, but want to omit `doc` and `misc` on trunk + all tags and branches. However, the `ignore-paths` option isn't acting like I'd expect. ``` ignore-paths = (doc|misc) ``` Seems to work, but I'm worried that it would also exclude a path like `trunk/code/proj1/doc/`, which I want to keep. ``` ignore-paths = ^(doc|misc) ``` Does not work -- `doc` and `misc` are pulled in by the initial `git svn fetch` command. How do I get a working regex that'll only match against directories at the root like this? The man page does not say whether `ignore-paths` matches against the "relative" path that'll end up at the root of the git clone (`doc`, etc.) or the "full" path as seen in the SVN remote (`branches/b1/doc` etc.), or something else.