我有一个分支和主干的服务器存储库。分支是所有团队成员的存储库。我试图svn hooks
只在分支下的仓库中使用,但它似乎不能正常工作。以下是我尝试采取的步骤:
my_repo
从远程服务器的签出branch/my_repo
由于本地 repo
my_repo
没有任何内容,我在本地创建了一个新的 svn repo 并将包括/hooks
文件夹在内的所有内容复制到my_repo
.我在其中创建了一个空文件
my_repo
并添加了一行文本。然后svn add
这个文件。修改了
my_repo/hooks/pre-commit.tmpl
文件并使其始终不通过错误代码 1。现在它看起来像:
#!/bin/sh 1号出口
复制
pre-commit.tmpl
到 pre-commit 并将 pre-commit 的执行许可添加到我自己服务器包含其他人的现在服务器的结构是这样的:
- 服务器 - 分支 - my_repo - 我的文件 - 挂钩 - 预提交 - 汤姆的回购 - 其他团队成员的回购 - 树干
- 在签出的仓库中,我使用以下方式提交了更改:
svn commit -m "dumb change"
现在从这里我应该无法提交,它应该给我一个代码 1 的错误,对吗?但我在任何地方都看不到它。
- 然后我尝试将 hooks 文件夹放在顶层,并与分支和树干处于同一水平。即结构看起来像:
-服务器 - 分支机构 - my_repo - 我的文件 - 汤姆的回购 - 其他团队成员的回购 - 树干 - 挂钩 - 预提交
但是,仍然无法正常工作。叹...
但是,在 David 的帮助下,我弄清楚了该怎么做以及出了什么问题: 1. 强调:hooks 文件夹的所有权应该与创建存储库的人相同。因此,我不得不要求所有者将挂钩文件添加到服务器。我没有在服务器上创建存储库,因此这些文件在我的工作目录中是不可见的。2.现在这是我尝试过的:
1)在我自己的Linux系统上,我`svnadmin create`一个新的存储库,可能称为test_server:其中有文件夹:confs,db,hooks,locks;文件:格式,readme.txt 2)在同一级别上,mkdir 一个新文件夹(称为working_dir)作为您的本地工作目录并从test_server 签出。现在 working_dir 包含一个名为 test_server 的文件夹,它是空的。您在步骤 1 中看不到任何文件夹或文件 3) 如上所述修改 test_server 的 hooks 文件。 4)尝试添加一个文件并在working_dir/test_server文件夹中的文件中添加一个新行并提交。 5)现在您应该看到提交失败并显示消息:svn:提交被预提交挂钩(退出代码 1)阻止,没有输出。
非常感谢大卫和任何人早些时候发表评论!