gpt4 book ai didi

Git hooks - 如何将文件从一个文件夹复制到同一 git 分支中的另一个文件夹

转载 作者:行者123 更新时间:2023-12-04 19:30:34 25 4
gpt4 key购买 nike

我正在“locales/US/en/”文件夹下创建/更新文件。在 git push/post-commit 期间,这些文件应该自动复制并提交到同一分支中的另一个文件夹“content/en-US”。您能否分享您关于如何为上述要求编写 git hooks 的意见?

最佳答案

我的建议是将此作为预提交步骤而不是服务器端的提交后或推送后步骤。

将此作为提交前的步骤将使您更好地控制每次提交中实际发生的事情,并将更好地遵守基本理念,即 git 提交是一个自包含的内容修改单元 而不是对文件进行一些任意操作。

将此作为提交的一部分还可以让您在resetcheckout 等时更轻松地重新创建开发树(内容)的状态.

您的预提交 Hook 可能是这样的:

  #!/bin/sh

for FILE in `exec git diff-index --check --cached HEAD -- | grep 'locales/US/en'` ; do
echo "Publishing $FILE to content/en-US"
cp $FILE content/en-US || { echo "Failed to publish $FILE"; exit 1; }
git add "content/en-US/$FILE" || { echo "Failed to git add content/en-US/$FILE"; exit 1; }
done
exit

请注意用于过滤相关文件的特别丑陋的 grep - 您可以通过将 git diff-index 结果放入 bash 数组并匹配目录和文件模式来改进它。

另请注意,当您尝试提交时,它总是会复制文件。如果您的提交因任何原因中止,它会在您重试时再次尝试复制文件。您当然可以在 content/en-US 目录中添加检查文件是否存在(并且相同!)以避免多次复制它。

关于Git hooks - 如何将文件从一个文件夹复制到同一 git 分支中的另一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20813385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com