java - Git 不在预提交 Hook 中使用暂存源

标签 java git maven githooks

在将更改推送到 git 之前,我在预提交 Hook 中使用此脚本进行一些检查。

#!/bin/bash
mvn clean compile -DskipTests &> $TEMP/cc.txt &
A=$!
wait $A
A=$?

if test "$A" != "0"
then
  cat $TEMP/cc.txt
  exit 1
fi

mvn javadoc:javadoc -T 8 &> $TEMP/jd.txt &
B=$!

mvn pmd:cpd-check &> $TEMP/pmd.txt &
C=$!

mvn org.jacoco:jacoco-maven-plugin:prepare-agent test org.jacoco:jacoco-maven-plugin:report -T 8 &> $TEMP/jcc.txt &
D=$!

mvn checkstyle:checkstyle -Dcheckstyle.config.location=https://XXXX &> $TEMP/cs.txt &
E=$!

wait $B
B=$?

wait $C
C=$?

wait $D
D=$?

wait $E
E=$?

mvn sonar:sonar -Dsonar.host.url=https://sonarcubeXXXX &> $TEMP/cq.txt &
F=$!
wait $F
F=$?

echo "compile $A, javadoc $B, pmd $C, jacoco $D, checkstyle $E, sonar $F"
if test "$A$B$C$D$E$F" != "000000"
then
  if test "$D" != "0"
  then
    cat $TEMP/jcc.txt
  fi

  if test "$F" != "0"
  then
    cat $TEMP/cq.txt
  fi
  exit 1
fi
exit 0

但是只要预提交 Hook 正在运行(5 分钟),我就无法工作和更改源文件。

我使用 Sourcetree 来提交,sourcetree 区分了暂存和未暂存的文件。提交文件时,sourcetree 执行以下命令:

git -c diff.mnemonicprefix=false -c core.quotepath=false commit -q -F C:\Users\XXXX\AppData\Local\Temp\fbox5amv.k5f

问题:

如何仅访问预期的代码库(当前推送的内容+我已暂存并尝试提交的内容),而不访问未在 Sourcetree 中暂存的更改?

我之前使用过 subversion-commit-hooks,它们是服务器端的,并且只能提取预期的代码库。

有什么想法吗?

最佳答案

由于没有其他答案,因此在提交之前如果没有未暂存的更改,可能无法访问暂存+已提交+推送的更改。

因此,我必须从预提交 Hook 更改为 post-commit Hook ,并将脚本更改为:

#!/bin/bash
rm -rf ../committed
mkdir ../committed
cp -rf * ../committed/
cd ../committed
git stash save -u

mvn clean compile -DskipTests &> $TEMP/cc.txt &
(...)

关于java - Git 不在预提交 Hook 中使用暂存源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688879/

相关文章:

java - maven-shade-插件 : how add all dependencies and custom local jar to executable jar?

java - 如何让 JTextArea 消耗其关键事件?

java - Web 应用程序中的 Appium : Unable to tap Allow permission button in notification pop up window

java - 在 Java 和 C 中,负数 Mod 给出负结果

用于在网络图中拆分分支的 Git 提交选项

java - 将 jar 文件安装到 Maven 构建中的特定位置

Maven Ant 部署 - OutOfMemoryError : Java heap space

JAVA:如果没有大括号,关系继续

git - 您如何编辑其他用户在您自己的仓库中发出的 pull 请求,但保持 PR 处于事件状态?

Git check out 旧分支 : any way to not delete newly created files?