gpt4 book ai didi

linux - 在我远程访问的 Linux 机器上运行的 SVN 中设置和测试预提交 Hook

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:15 24 4
gpt4 key购买 nike

我会尽力坦诚地解决我的问题。

我使用的是 Windows 计算机。 SVN 存储库位于 Linux 计算机上。

我使用 Putty 并以 root 身份登录来远程访问 Linux 计算机。一切都是通过命令行完成的。

现在,我必须设置一个预提交 Hook ,不允许在源代码文件中使用 [éáú] 等特殊字符。为了做到这一点,我开始研究如何设置预提交 Hook 。

这是我所做的:

  1. 找到脚本
  2. 转到存储库中的 hooks 文件夹。删除了文件的扩展名pre-commit.tmpl
  3. 将脚本粘贴到此处并保存
  4. 对文件 pre-commit.tmpl 运行 chmod 命令

然后我尝试向存储库提交更改,我得到:

提交被预提交 Hook (退出代码 255)阻止且没有输出

好吧,我发现我设置预提交文件的方式出了问题,所以我删除了脚本并添加了一个简单的 echo“hello world”。

现在提交已通过,但回显消息根本不显示。如果我将 exit 1 放在脚本末尾,则会收到错误代码 1,并且回显消息仍然不会显示。

我在互联网上到处搜索,但没有找到解决我的问题的方法。

我需要什么:

  • 解释为什么回显消息没有显示
  • 如果可能,请详细说明如何设置和测试简单脚本

例如,我见过很多脚本,其中都有这样的内容:

#!/bin/bash
REPOS="$1"
TXN="$2"

我应该在 REPOS 和 TXN 中放入什么?我假设在 REPOS 中我应该放置存储库路径? TXN 怎么样?

感谢任何帮助。

干杯

最佳答案

预提交钩子(Hook)的坯料(*Nix 采用)

总是失败

#!/bin/bash 
echo You failed 1>&2
exit 1

提交示例

>svn commit -m "Changes"
Sending Folder1\Folder2\Folder3
Sending Folder4
svn: E165001: Commit failed (details follow):
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:
You failed

注意 echo 中输出的正确重定向

关于$REPO和$TXN(已链接)SVN书籍章节有完整解释

The command-line arguments passed to the hook program, in order, are:

  1. Repository path
  2. Commit transaction name

因为这些参数是最常在预提交 Hook 命令中使用的参数,例如 svnlook

关于linux - 在我远程访问的 Linux 机器上运行的 SVN 中设置和测试预提交 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32502107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com