2013-08-03 44 views
1

我有一个像这样的目录结构:〜/ main/sub。在主文件夹中,我有一个git存储库。它忽略子目录(主目录中有更多内容)。我需要这两个分开的源,所以我在子目录中添加了一个新的git回购。但我需要同时承诺和推动他们。所以,我将以下代码添加到主目录库中的commit-msg钩子。Git commit每当我尝试使用钩子时崩溃

echo "Commiting Content" 

now=$(date +"%c") 
cd sub 
git add --all . 
git commit -a -m "$now Update" 

echo "Commiting Content complete!" 

但每次我运行一个提交时间,这段代码将执行,但它会崩溃。 index.lock文件将保留在sub目录的.git文件夹中。它甚至不会将文件添加到提交。当我转到子文件夹并使用git status它会告诉我还有未跟踪的文件!

然后我把代码放在一个单独的bash脚本中,放在同一个hooks文件夹中。在终端执行它,它的工作!为什么这个工作和钩子文件失败?

回答

0

钩子运行在你的git仓库的根目录下。如果main是根目录,则只需要执行cd sub而不是cd main/sub

你使用git submodules?它可能适用于你的情况;它不会同时提交两次回购,但如果是main的子模块,则可以先提交sub,然后将此提交作为更改添加到main并提交。通过这种方式,其他人可以检出main,并将最新的sub版本修改为主要版本。

+0

对不起对不起...我只做CD子...其实它在主/迪尔/子 – THpubs

+0

崩溃是否给出任何输出? – flyx

+0

不会。当我提交给main时,它执行上面的命令并显示sub也被提交。但不是。 index.lock文件就在那里。 – THpubs

相关问题