簡體   English   中英

在我遠程訪問的 Linux 機器上運行的 SVN 中設置和測試預提交鈎子時需要幫助[逐步]

[英]Need help[step by step] in setting up and testing a pre-commit hook in SVN running on Linux machine which I access remotely

我會盡量坦率地解決我的問題。

我在 Windows 計算機上。 SVN 存儲庫位於 Linux 機器上。

我遠程訪問 Linux 機器,使用 Putty 並以 root 身份登錄。 一切都是通過命令行完成的。

現在,我必須設置一個預提交鈎子,它不允許在源代碼文件中出現像 [éáú] 這樣的特殊字符。 為了做到這一點,我開始研究如何設置預提交掛鈎。

這是我所做的:

  1. 找到一個腳本
  2. 轉到存儲庫中的 hooks 文件夾。 刪除了文件pre-commit.tmpl的擴展名
  3. 將腳本粘貼到那里並保存
  4. 在文件pre-commit.tmpl上運行 chmod 命令

然后我嘗試提交對存儲庫的更改,我得到:

提交被預提交鈎子(退出代碼 255)阻止,沒有輸出

好吧,我發現我設置預提交文件的方式有問題,所以我刪除了腳本並添加了一個簡單的 echo“hello world”。

現在提交通過了,但回顯消息根本沒有出現。 如果我將exit 1放在腳本的末尾,我會收到錯誤代碼 1 並且回顯消息仍然沒有顯示。

我確實在互聯網上進行了高低搜索,但沒有找到解決我的問題的方法。

我需要的:

  • 關於回聲消息未顯示的原因的解釋
  • 如果可能,逐步介紹如何設置和測試簡單腳本

例如,我看過很多腳本,其中有這樣的內容:

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

我應該在 REPOS 和 TXN 中放入什么? 我假設在 REPOS 中我應該放置存儲庫路徑? TXN呢?

任何幫助表示贊賞。

干杯

預提交鈎子的鋼坯(*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 Book 章節有完整說明

傳遞給鈎子程序的命令行參數依次為:

  1. 存儲庫路徑
  2. 提交事務名稱

因為在預提交鈎子命令中最常用的需要這些參數,比如 svnlook

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM