繁体   English   中英

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

[英]Git hooks - How to copy files from one folder to another folder within same git branch

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

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

将其作为预提交步骤可以使您更好地控制每次提交中实际执行的操作,并更好地遵循git commit是内容修改的独立单元而不是对文件进行某些任意操作的基本理念。

将其作为提交的一部分还可以使您更容易在resetcheckout等时重新创建开发树(内容)的状态。

您的预提交挂钩可能类似于:

  #!/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目录中是否存在(并且相同!)的检查,以避免多次复制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM