2015-09-24 69 views
0

标题几乎说明了一切。Git pre-commit hook作为post-commit

在本地回购我有.git文件夹包含我的钩子。我使用自定义的Lua源代码将当前版本写入文件内部。然后在pre-commit钩子我有:

#!/bin/sh 
# 
# An example hook script to verify what is about to be committed. 
# Called by "git commit" with no arguments. The hook should 
# exit with non-zero status after issuing an appropriate message if 
# it wants to stop the commit. 
# 
# To enable this hook, rename this file to "pre-commit". 

echo "START" >> E:/Desktop/tmp.txt 

exec $LUA_HOME\\lua.exe ${PWD}\\hooks\\pre-commit.lua "${PWD}/lua/autorun/trackassembly_init.lua" "Rev." > E:/Desktop/tmp.txt 

我有两个文件。在第一次,我做了实际的变化(源文件)。第二个我用来编写当前版本(版本文件)。

每当我使用TortoiseGit做:在索引中添加

1) Modify the source file 
2) Repo Directory --> Right Click --> Git Commit "master" 

有关源文件中的信息,但没有改变的版本文件,它里面的新版本的痕迹。这导致了工作副本和版本文件之间的差异,并且TortoiseGit在目录上放置了一个(!)。

根据手册:

的pre-commit钩子是第一次运行,在你甚至在键入提交消息。它用于检查即将提交的快照,查看是否遗漏了某些内容,确保测试运行,或者检查代码中需要检查的任何内容。从这个钩子退出非零中止提交

回答

1

在git中,您首先进行更改(git add),然后您提交它(git commit)(然后您推送它,但在此不重要)。提交后提交后挂接后运行;如果您当时更改工作副本,则不会影响分阶段更改。

+0

我应该如何插入我的版本呢?它的工作原理当我设置TortoiseGit使用一些称为启动提交钩子。它做的伎俩,但IDK是可用的“**。git/hooks **”目录我猜是...不,放置一个名为“启动提交”的文件后,它甚至没有找到它。 –

+0

@ДеянДобромиров:在钩子更改后,只需'git add'更改的文件。 – choroba

+0

http://stackoverflow.com/q/16831536/1030675 – choroba