簡體   English   中英

通過CIF進行顛覆不起作用

[英]subversion via cifs is not working

我試圖在Linux機器上使用Subversion,存儲庫位於Microsoft sbs2008服務器上。 (我可以從Microsoft Windows 7計算機訪問存儲庫。)有人可以告訴我如何使其工作嗎?

這就是我所做的。

# sudo mount -t cifs -v -o credentials=~/Files/server-mount-credentials,uid=richard,nocase,nounix,nosuid  //sbs2008/local ~/Files/server-mount/

# svn commit -m ""

Adding         file1
Sending        file2
Transmitting file data ........svn: Commit failed (details follow):
svn: database is locked

strace顯示:

open("/home/rdelorenzi/Files/server-mount/svn_repository/db/rep-cache.db", O_RDWR|O_CREAT|O_LARGEFILE, 0644) = 12

...

_llseek(12, 162816, [162816], SEEK_SET) = 0
read(12, "\n\0\0\0\20\1 \0\1 \1N\1|\1\252\1\330\2\6\0024\2b\2\220\2\276\2\354\3\32"..., 1024) = 1024

_llseek(12, 100352, [100352], SEEK_SET) = 0
read(12, "\n\0\0\0\24\0i\0\0i\0\227\0\305\0\363\1!\1O\1}\1\253\1\331\2\7\0025\2c"..., 1024) = 1024
_llseek(12, 52224, [52224], SEEK_SET)   = 0
read(12, "\n\0\0\0\24\0k\0\0\231\0\307\0\365\1#\1Q\1\177\1\255\1\333\2\t\0027\2d\2\222"..., 1024) = 1024

fcntl64(12, F_SETLK64, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}, 0xbf8e15e8) = 0
fcntl64(12, F_SETLK64, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}, 0xbf8e15e8) = -1 EACCES (Permission denied)

不要通過網絡共享來安裝Subversion存儲庫,否則它將無法可靠地運行。

file://訪問僅適用於本地單用戶訪問,尤其是測試和調試。 當您要共享存儲庫時,您確實需要設置適當的服務器,並且這並不像您想的那樣困難。 閱讀“訪問存儲庫”一節,以獲取有關選擇和設置服務器的指南。 [鏈接]

如David W所述,您需要運行SVN服務器。

您可以控制Windows機器嗎? 端口3690是否暢通? 為什么不在Windows計算機上使用svnserve服務器。 然后,您不必掛載文件系統。

在Windows計算機上:

 c:\> svnserve -r C:\path\to\your\repository -d

在您的Linux機器上

$ svn co svn://sbs2008/trunk

另一種可能性是在Windows 機器上使用VisualSVN Server 然后,您可以使用Apache的httpd訪問您的存儲庫:

$ svn co http://sbs2008/svn/trunk

VisualSVN Server不是開源的,但是只要您不需要Windows Active Directory連接之類的高級功能,它都是免費的。

好。 假設我不知道也無法理解mount命令和參數。

在這種情況下,我只是問:

您到底想做什么? 直接使用存儲庫中的文件(不是repo中的 文件 ,而是的文件 )? 是出於什么原因?

Subversion具有Client-Server體系結構 ,客戶端與服務器進行通信,這從客戶端隱藏了處理物理存儲庫后端的詳細信息

Subversion的網絡層是抽象的,這意味着Subversion客戶端無論使用哪種服務器,都表現出相同的常規行為。 無論是使用Apache HTTP Server說HTTP協議(http://)還是說使用svnserve說自定義Subversion協議(svn://),基本網絡模型都是相同的。

您以客戶端人員的身份使用由一對客戶端和服務器提供的工作副本中的存儲庫的物理表示形式 (存儲庫狀態), 存儲庫的 邏輯表示形式 svn-client作為客戶端程序與 存儲庫 服務器通信,使用服務器訪問協議公開的任何內容來處理存儲庫,並且服務器稍后在最低可能的層上使用存儲庫(可讀寫文件)

這不是一個答案,而是幾個問題供您仔細考慮。

您為什么認為這行得通? cifs文件系統驅動程序以一種在最壞的情況下只能讀取文件的方式公開NTFS文件系統。 cifs驅動程序公開的功能必須在NTFS末尾具有匹配的功能。

因此,如果SVN無法實現或不支持所需的功能,那么您很可能會遇到類似這樣的問題。

我建議查看cifs文檔,並檢查已知的限制或方法來調整驅動程序以提供更多功能。

並且,當然,您需要檢查導出的NTFS文件系統的ACL。 如果cifs驅動程序支持此操作,並且該操作應該起作用,但如果NTFS文件系統的所有者錯誤或設置了只讀位,它仍將失敗。

暫無
暫無

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

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