我有一个包含用C编写的代码的git存储库。其中一个文件是包含该行的Version.c文件
IEnumerator Translate()
{
var projectile = Projectile.transform; // Cache the transform
while (IsMoving)
{
// Calculate the next position the transform should be in the next frame.
var delta = projectile.forward * ProjectileSpeed * Time.deltaTime;
var nextPosition = projectile.position + delta;
// Do a raycast from current position to the calculated position to determine if a hit occurs
RaycastHit hitInfo;
if (Physics.Linecast(projectile.position, nextPosition, out hitInfo, CollisionLayerMask))
{
projectile.position = hitInfo.point;
OnCollision(hitInfo); // Ok, we hit
}
else projectile.position = nextPosition; // Nope, haven't hit yet
yield return null;
}
}
我有一个脚本可以找到这一行,并将数字0增加到下一个整数。该脚本是用Perl编写的,但我可以很容易地使用awk或sed。
当分支合并到master时,我想在git中自动触发脚本。我认为服务器端钩子是正确的方法。但是,我不确定这是否是最佳方法?
例如,它是否需要在主分支上执行git commit或git add?假设这是最好的方法,你能推荐合适的钩子吗?或者有更好的方法来解决同样的问题吗?
答案 0 :(得分:1)
有一个钩子post-merge
可以由git merge
调用。但它适用于当地的回购。
如果您希望Git追踪更改,是的,您需要添加并提交它。这在远程仓库中不适合。
在此钩子中,您可以检查当前分支是否为master
。如果是,请进行更改,添加和提交。如果没有,就别做其他事。
git merge
的任何选项在部署后都无法绕过此钩子,这有时可能会令人讨厌。如果你想要禁用钩子,有一些方法可以完成这项工作。设置一个可在钩子内到达的标志变量,检查其值并继续。您可以在git merge
之前导出环境变量,然后再将其取消设置。或者,您可以设置自定义配置密钥。例如,事先git config my.post-merge true
或git config my.post-merge false
。在钩子中,检查git config --get my.post-merge
的值。另一种方法是更改钩子的名称,例如mv .git/hooks/post-merge .git/hooks/post-merged
。在需要时将其更改回来。