git clone from within pre-commit hook causes hook to fail
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I have a pre-commit hook that needs to run a custom, in-house scanner on all committed files. This scanner is also maintained in its own git repo. So in the hook file I run git clone ... to make sure the latest version is being used. The problem I'm running into is that all git commands after the clone work on the cloned repo instead of the one for which the hook is running. As a result, I cannot get a list of updated files. Additionally, the hook always fails with:
error: invalid object...
error: Error building trees
Where the invalid object listed is from the cloned repo.
I've made sure I'm cloning into a completely different directory. I've also set the GIT_TRACE and GIT_TRACE_SETUP environment variables before committing. I can see that the git_dir, worktree and cwd values are all as I would expect them. They are set to the first repo initially, then to the cloned repo during the clone process, then back to the first repo after the clone completes.
As soon as I remove the git clone the hook runs without a hitch.
I'm running version 2.11.0 of git.
Why is the clone wreaking so much havoc and how can I prevent that?
git
add a comment |
I have a pre-commit hook that needs to run a custom, in-house scanner on all committed files. This scanner is also maintained in its own git repo. So in the hook file I run git clone ... to make sure the latest version is being used. The problem I'm running into is that all git commands after the clone work on the cloned repo instead of the one for which the hook is running. As a result, I cannot get a list of updated files. Additionally, the hook always fails with:
error: invalid object...
error: Error building trees
Where the invalid object listed is from the cloned repo.
I've made sure I'm cloning into a completely different directory. I've also set the GIT_TRACE and GIT_TRACE_SETUP environment variables before committing. I can see that the git_dir, worktree and cwd values are all as I would expect them. They are set to the first repo initially, then to the cloned repo during the clone process, then back to the first repo after the clone completes.
As soon as I remove the git clone the hook runs without a hitch.
I'm running version 2.11.0 of git.
Why is the clone wreaking so much havoc and how can I prevent that?
git
add a comment |
I have a pre-commit hook that needs to run a custom, in-house scanner on all committed files. This scanner is also maintained in its own git repo. So in the hook file I run git clone ... to make sure the latest version is being used. The problem I'm running into is that all git commands after the clone work on the cloned repo instead of the one for which the hook is running. As a result, I cannot get a list of updated files. Additionally, the hook always fails with:
error: invalid object...
error: Error building trees
Where the invalid object listed is from the cloned repo.
I've made sure I'm cloning into a completely different directory. I've also set the GIT_TRACE and GIT_TRACE_SETUP environment variables before committing. I can see that the git_dir, worktree and cwd values are all as I would expect them. They are set to the first repo initially, then to the cloned repo during the clone process, then back to the first repo after the clone completes.
As soon as I remove the git clone the hook runs without a hitch.
I'm running version 2.11.0 of git.
Why is the clone wreaking so much havoc and how can I prevent that?
git
I have a pre-commit hook that needs to run a custom, in-house scanner on all committed files. This scanner is also maintained in its own git repo. So in the hook file I run git clone ... to make sure the latest version is being used. The problem I'm running into is that all git commands after the clone work on the cloned repo instead of the one for which the hook is running. As a result, I cannot get a list of updated files. Additionally, the hook always fails with:
error: invalid object...
error: Error building trees
Where the invalid object listed is from the cloned repo.
I've made sure I'm cloning into a completely different directory. I've also set the GIT_TRACE and GIT_TRACE_SETUP environment variables before committing. I can see that the git_dir, worktree and cwd values are all as I would expect them. They are set to the first repo initially, then to the cloned repo during the clone process, then back to the first repo after the clone completes.
As soon as I remove the git clone the hook runs without a hitch.
I'm running version 2.11.0 of git.
Why is the clone wreaking so much havoc and how can I prevent that?
git
git
asked Nov 26 '18 at 16:49
Michael AlbersMichael Albers
3,26831626
3,26831626
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53485637%2fgit-clone-from-within-pre-commit-hook-causes-hook-to-fail%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53485637%2fgit-clone-from-within-pre-commit-hook-causes-hook-to-fail%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown