gpt4 book ai didi

SVN 预提交问题

转载 作者:行者123 更新时间:2023-12-04 19:16:21 26 4
gpt4 key购买 nike

我在网上找到了这个脚本,很少有人说它适用于他们的存储库。该脚本允许预提交检查以在检查时强制检查评论。问题是我将它添加到 SVN 中的 hooks 目录,现在所有提交(甚至是带有注释的提交)都失败并显示此错误消息 “提交被预提交阻止(退出代码 255),没有输出”

现在,我无法更改脚本或删除它,因为我遇到了同样的错误。关于如何还原此预提交脚本的任何建议?

#!/bin/bash

# [1] REPOS-PATH (the path to this repository)
# [2] TXN-NAME (the name of the txn about to be committed)

REPOS="$1"
REV="$2"

@echo off
::
:: Stops commits that have empty log messages.
::

@echo off

setlocal

# rem Subversion sends through the path to the repository and transaction id
set REPOS=%1
set TXN=%2

# rem check for an empty log message
svnlook log %REPOS% -t %TXN% | findstr . > nul
if %errorlevel% gtr 0 (goto err) else exit 0

:err
echo. 1>&2
echo Your commit has been blocked because you didn't give any log message 1>&2
echo Please write a log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2
exit 1

最佳答案

这意味着它甚至没有执行您的钩子(Hook)。每当您遇到这样的错误时,它可能意味着几件事:

  • 脚本顶部的 shebang 不正确。也许在您的系统上没有 BASH shell,或者 BASH shell 位于/usr/local/bin/bash 或/usr/share/bin/bash。在 Linux 系统上不太可能,但在 Solaris 上很有可能。检查这个。
  • 脚本没有设置可执行位。您需要对脚本执行 chmod +x
  • 预提交 shell 脚本无法调用您的脚本本身。查看 Hook 目录中的 pre-commit 脚本,确保它正在调用您的脚本。或者,您已将脚本重命名为 pre-commit 并将其放在该目录中。

另一种可能性(更仔细地查看您的脚本)是您将 pre-commit BASH 脚本与 Windows shell 的 pre-commit.bat 版本混淆了.您的脚本后半部分的语法是 Windows shell,但上半部分是 BASH shell。

这是我的 pre-commit hook .它在 Perl 中,因此它适用于 Windows 和 Unix/Linux/Mac。您必须安装 ActivePerlStrawberry Perl在您的 Windows 机器上,但两者都是免费和开源的。

我的预提交脚本可以做几件事,例如通过允许人们创建标签但不允许修改标签来确保人们不会意外更改标签。

我的脚本还允许对提交注释进行更多检查。例如,您是否使用错误跟踪系统?您可以将我的 Hook 设置为在提交评论中要求错误跟踪 ID。

另一种可能性(也是我真正推荐的东西)是使用连续构建工具,如 Jenkins . Jenkins 会自动构建并在每次提交时运行测试。这可确保及早发现错误,而不是在后期制作中发现错误。

Jenkins 的一大优势在于它提供了一个漂亮的网页,其中包含各种信息,例如谁进行了更改以及他们进行了哪些更改。开发人员发现这非常有帮助,以至于他们会在没有被询问的情况下自动开始添加好的提交评论。令人惊奇的是,我可以通过 Subversion 更改日志并查明我开始使用 Jenkins 的确切时间。

在您的预提交脚本中,您只需检查是否有空注释。如果您的开发人员不想发表评论,您将开始收到类似changed codeadaadsdasdasda 只是为了让提交通过。有了像 Jenkins 这样的东西,开发人员实际上开始自己添加好的提交评论。

关于SVN 预提交问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7326587/

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