簡體   English   中英

SVN更新不能在提交后工作

[英]svn update not working in post commit

我正在嘗試實現提交后掛鈎以更新工作副本。 據我所知,post commit掛鈎正在運行(我在文件中寫了一些東西來驗證它),但是update命令沒有運行。

起初我做了

cd /home/user/working/copy
svn update

但這沒有用,然后我讀到你必須給出svn的完整路徑:

cd /home/user/working/copy
/usr/bin/svn update

但仍然無法正常工作。

我將權限更改為777,並在一個空環境中運行了該腳本...並且它可以正常工作。

#!/bin/bash
/usr/bin/svn update /home/user/working/copy

上面的代碼應作為提交后的掛鈎。

如果需要,添加--username和--password選項。

編輯:

看到 http://subversion.tigris.org/faq.html#website-auto-update

執行提交(svnserve或apache)的服務器程序與將運行提交后鈎子腳本的程序相同。 這意味着該程序必須具有適當的權限才能更新工作副本。

如果需要更新的“工作副本”由同一用戶擁有,那么您不必擔心用戶名和密碼。

Subversion FAQ建議將Setuid與以下C程序一起使用。

#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
execl("/usr/local/bin/svn", "svn", "update", "/home/joe/public_html/",
    (const char *) NULL);
return(EXIT_FAILURE);
}

我也遇到了同樣的問題,並嘗試了所有方法(包括官方常見問題中的一種方法),但沒有運氣

當然,我也根據需要每次都運行chmod -R和chown -R www-data:www-data。

在大多數情況下,將執行更新命令,沒有權限錯誤,沒有任何其他錯誤消息,但是不會更新工作副本。

最后,以下步驟對我來說很有效:

在提交后的鈎子運行中

export LC_CTYPE=en_US.UTF-8
cd [/working-copy-folder/] # heading tail slash
/usr/bin/svn checkout [source path]

一次,然后將提交后的鈎子更新為

export LC_CTYPE=en_US.UTF-8
cd [/working-copy-folder/]
/usr/bin/svn update

現在它正在工作,我太累了,無法找到根本原因。 全天都在“ svn更新”上

工作副本位於用戶的主目錄中。 如果SVN服務器以其他用戶身份運行,例如說“ svnserver”,則提交后掛鈎腳本將以“ svnserver”運行。 除非一個文件上的權限設置允許這樣做,否則一個用戶不能修改或讀取另一個用戶的文件是很有意義的。

您不應在多個用戶之間共享工作副本 如果確實需要,僅給每個用戶授予讀/寫權限是不夠的。 您還需要確保沒有用戶創建其他用戶無法訪問的文件。 為此,您需要為設置正確umask的svn命令編寫包裝器腳本,或者為所有相關用戶提供通過sudo充當特定用戶的能力。

如果你不自己使用workingcopy,可以chown將此workingcopy用戶運行於鈎腳本

此腳本更好,因為它僅更新必需的文件... http://vidax.net/blog/zh/2010/03/subversion-post-commit-hook/

我得到的最終解決方案是將我得到的一些答案混合在一起。 我的服務器以無人運行的apache身份運行,因此我將工作副本歸任何人所有,並屬於UserName組,然后將其chmod更改為775。這樣,掛鈎將起作用,用戶名也將具有通過FTP更新文件的權限。

wcoenen的答案肯定是正確的。 解決此問題的最簡單方法是將SVN用戶添加到您的組中。 假設您的提交后掛鈎由用戶someUser和組someUser擁有。 將SVN服務器添加到someUser組,並將提交后的鈎子腳本更改為可組執行的,將解決您的問題。

我希望這是有道理的:P

我相信提交后實際上是在提交可見之前運行的。 很奇怪,但是說您提交了修訂版30。提交后仍會將29視為最新修訂版。 提交后腳本完成后,您將看到30作為主要修訂版本。

我可能是錯的。 嚴格來說,這是從內存中獲取的。 至少要嘗試一下。

暫無
暫無

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

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