Everything Node.JS lives within a subfolder e.g myGitRepo/source/package.json:
"devDependencies": {
"commitizen": "^4.0.3",
"cz-conventional-changelog": "^3.0.2",
"husky": "^3.0.9"
},
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
},
"husky": {
"hooks": {
"prepare-commit-msg": "exec < /dev/tty && npx git cz --hook || true"
}
}
Overriding config.commitizen.path to the plain npm module name cz-conventional-changelog (as per #469) is sufficient to get npx git cz working, BUT...
Trying to use the husky hook (which is from the README) will throw:
myGitRepo/source $ git commit
# (Prompting works fine, but then...)
Error: ENOENT: no such file or directory, open '/myCoolParentFolder/myGitRepo/source/.git/COMMIT_EDITMSG
Note that it's always taking the package.json folder, not the current working directory e.g:
myGitRepo/source/packages $ git commit
# (Also prompts fine, but tries to write to same wrong .git folder...)
Error: ENOENT: no such file or directory, open '/myCoolParentFolder/myGitRepo/source/.git/COMMIT_EDITMSG
It doesn't seem to be possible to override via environment variables (e.g. by messing with GIT_DIR in the husky hook statement like they do here or here), because cli/strategies/git-cz.js explicitly calls commitizen.commit with repoPath = process.cwd():
commit(sh, inquirer, process.cwd(), prompter, {
args: parsedGitCzArgs,
disableAppendPaths: true,
emitData: true,
quiet: false,
retryLastCommit,
hookMode
}, function (error) {
if (error) {
throw error;
}
});
...and git/commit.js uses that repoPath to store the captured message:
const commitFilePath = path.join(repoPath, '/.git/COMMIT_EDITMSG');
This issue only affects running in hook mode, because in standard git cz we just pass the message through as an argument to a spawned git process, which manages to figure out that it's in a subfolder of a repository.
I had a look around to try and figure what a fix might look like, but I don't really understand why cliPath and repoPath are tracked as separate variables when the CLI strategy seems to just force repoPath to the package root?
Same problem here, any solutions?
+1. had same issue
may be a config setting to provide path to git/parent will fix
Still experiencing this issue. Is there an update?
Hello, I have encountered this issue, too. And it seems that there is a PR to fix this issue. Why that PR is not merged yet? Is there anything we can do fix this issue? Thanks.
Most helpful comment
Same problem here, any solutions?