giter8
giter8 copied to clipboard
Template generation ignores files that "vanilla" .gitignore doesn't
Using the latest giter8 from brew (0.10.0), some file patterns in .gitignore are ignored by giter8 that wouldn't be ignored by git.
Here is an example:
Template structure:
> tree -a minimal.g8/
minimal.g8
└── src
└── main
└── g8
├── .gitignore
├── default.properties
└── src
└── main
└── resources
└── test.conf
6 directories, 3 files
.gitignore contents in scaffold:
**/resources/build.properties
Generated directory:
> g8 file://minimal.g8 --name=minimal
> tree -a minimal/
minimal/
└── .gitignore
0 directories, 1 file
Note that src/main/resources/test.conf is missing. We can verify that "normal" git would not ignore these files with git check-ignore:
✗ git check-ignore --verbose src/main/resources/test.conf
✗ git check-ignore --verbose src/main/resources/build.properties
.gitignore:1:**/resources/build.properties src/main/resources/build.properties
Here is another example, this time using a wildcard for filename:
Template
> tree -a minimal.g8/
minimal.g8/
└── src
└── main
└── g8
├── .gitignore
├── default.properties
├── deploy
│ └── .gitkeep
└── src
└── main
└── resources
└── test.conf
7 directories, 4 files
.gitignore contents in scaffold:
deploy/*.json
Generated directory
> g8 file://minimal.g8 --name=minimal
> tree -a minimal/
minimal/
├── .gitignore
└── src
└── main
└── resources
└── test.conf
3 directories, 2 files
git check-files result in generated project:
✗ git check-ignore --verbose deploy/.gitkeep
✗ git check-ignore --verbose deploy/service.json
.gitignore:1:deploy/*.json deploy/service.json
I also verified the two ignores using JGit:
@ import org.eclipse.jgit.ignore.FastIgnoreRule
import org.eclipse.jgit.ignore.FastIgnoreRule
@ val rule = new Fast
FastIgnoreRule
@ val rule = new FastIgnoreRule("deploy/*.json")
rule: FastIgnoreRule = deploy/*.json
@ rule.isMatch("deploy/.gitkeep", false)
res3: Boolean = false
@ rule.isMatch("deploy/service.json", false)
res4: Boolean = true
@ val rule2 = new FastIgnoreRule("**/resources/build.properties")
rule2: FastIgnoreRule = **/resources/build.properties
@ rule2.isMatch("src/main/resources/build.properties", false)
res6: Boolean = true
@ rule2.isMatch("src/main/resources/test.conf", false)
res7: Boolean = false