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) {
