Consistently use `git rev-parse` to find hooks-dir Change-Id: I2ce560a2d9d4492e0c9352d723d6cd205815c5cb
diff --git a/src/main/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHook.java b/src/main/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHook.java index ccdfeda..76d4166 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHook.java +++ b/src/main/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHook.java
@@ -29,11 +29,11 @@ public class CloneWithCommitMsgHook extends CloneCommand { @VisibleForTesting protected static final String HOOK_COMMAND_KEY = "installCommitMsgHookCommand"; + @VisibleForTesting protected static final String HOOKS_DIR = "`git rev-parse --git-dir`/hooks/"; @VisibleForTesting protected static final String EXTRA_COMMAND_KEY = "installCommitExtraCommand"; private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - private static final String HOOK = "hooks/commit-msg"; - private static final String TARGET = " `git rev-parse --git-dir`/"; + private static final String HOOK = "commit-msg"; private final String configCommand; private final String extraCommand; @@ -51,7 +51,6 @@ @Override public String getCommand(DownloadScheme scheme, String project) { String projectName = getBaseName(project); - StringBuilder command = null; if (configCommand != null) { @@ -71,14 +70,15 @@ .append(super.getCommand(scheme, project)) .append(" && (cd ") .append(QuoteUtil.quote(projectName)) - .append(" && mkdir -p .git/hooks") - .append(" && curl -Lo") - .append(TARGET) + .append(" && mkdir -p ") + .append(HOOKS_DIR) + .append(" && curl -Lo ") + .append(HOOKS_DIR) .append(HOOK) .append(" ") .append(getHookUrl()) - .append("; chmod +x") - .append(TARGET) + .append("; chmod +x ") + .append(HOOKS_DIR) .append(HOOK) .append(")"); } @@ -101,7 +101,7 @@ if (!canonicalWebUrl.endsWith("/")) { hookUrl.append("/"); } - hookUrl.append("tools/").append(HOOK); + hookUrl.append("tools/hooks/").append(HOOK); } else { logger.atWarning().log( "Cannot add commit-msg hook URL since gerrit.canonicalWebUrl isn't configured.");
diff --git a/src/test/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHookTest.java b/src/test/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHookTest.java index 3d1f810..d4ca37c 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHookTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHookTest.java
@@ -15,6 +15,7 @@ import static com.google.common.truth.Truth.assertThat; import static com.googlesource.gerrit.plugins.download.command.CloneWithCommitMsgHook.EXTRA_COMMAND_KEY; +import static com.googlesource.gerrit.plugins.download.command.CloneWithCommitMsgHook.HOOKS_DIR; import static com.googlesource.gerrit.plugins.download.command.CloneWithCommitMsgHook.HOOK_COMMAND_KEY; import com.googlesource.gerrit.plugins.download.DownloadCommandTest; @@ -116,8 +117,8 @@ private String getDefaultHookCommand() { return String.format( - "(cd %s && mkdir -p .git/hooks && curl -Lo `git rev-parse --git-dir`/hooks/commit-msg https://%s/tools/hooks/commit-msg; chmod +x `git rev-parse --git-dir`/hooks/commit-msg)", - baseName(ENV.projectName), ENV.fqdn); + "(cd %s && mkdir -p %s && curl -Lo %scommit-msg https://%s/tools/hooks/commit-msg; chmod +x %scommit-msg)", + baseName(ENV.projectName), HOOKS_DIR, HOOKS_DIR, ENV.fqdn, HOOKS_DIR); } private CloneCommand getCloneCommand(String hookCommand, String extraCommand) {