2009-11-02 167 views
2

我有一個web開發人員。客戶端使用不允許shell訪問的共享主機,因此不能訪問SVN,Git等。我試圖說服他移動到允許它的許多便宜選項之一,但他不會做它。如果我在登臺服務器上使用版本控制,是否有任何工具可以讓我通過ftp將更改複製到生產中?在本地我有兩個mac &窗口,登臺服務器是linux,所以這些平臺上的工作原理....如何通過ftp進行版本控制?

回答

0

找不到/實現一些基於FUSE的CoW文件系統支持不可變版本..我' d只需找到另一個(更適合開發者)的主機。據我所知,沒有FTP服務器本身支持這一點,我也不能想到任何優雅的手段,用腳本hackery把它放在適當的位置。

我可能是錯的。

+0

正如我所說的:客戶端不會移動主機 – sprugman 2009-11-03 03:10:00

+0

@sprugman:有些問題根本無法在給定的約束條件下解決。你不能在火星上寫你的名字,你不能使用FTP作爲VCS而不會跳過火車。如果FTP服務器由http://ext3cow.com分區支持,那麼您可能會有一個開始,並且我至少用_try_來提供某種解決方案。 – 2009-11-04 15:28:21

+0

@tinkertim:我試圖讓你投降,但它不會讓我('投票太舊以至於無法改變')。 FWIW,我沒有真正讀過你的初始文章作爲建議。你寫這本書的方式是:「缺乏這聽起來不可能的東西(鑑於這位主持人的限制),做你在你原來的帖子中說過的東西,你不能這樣做」,這就是爲什麼我下投票。 – sprugman 2009-11-04 18:00:10

0

你可能需要編寫一個批處理文件,它能夠

  1. 出口SVN倉庫
  2. 將通過FTP
  3. 上傳導出的文件到你的Linux服務器
1

某種類型的ftp鏡子軟件就是你需要的。沒有測試它,但一個快速搜索給了我this Java application。你可以在你最新的檢出版本庫上運行它。

3

使用您的Linux臨時服務器,您可以保留專門用於該主機的單獨檢出副本,然後使用實用程序將該目錄與主機服務器進行鏡像。

LFTP對這種事情很有用。它可用於大多數Linux發行版,幷包含「鏡像」功能:

將指定的源目錄鏡像到 本地目標目錄。如果目標 目錄以斜線結尾,則將源基本名稱附加到 目標 目錄名稱。源和/或目標可以是指向 目錄的URL。

1

保持SVN回購和FTP副本同步的好處是svn2web。我可以建議爲生產副本創建單獨的分支,併合併到該分支以上傳到生產服務器。

0

這個問題(和答案)剛好幫助我,因爲我通過gitolite在單獨的服務器和lftp上實現了版本控制。

這裏就是我所做的:

  1. Set up gitolite我的Ubuntu的臨時服務器上
    1. 創建的基本回購(即foo.git)臨時服務器上
    2. 克隆foo.git到工作目錄上的臨時服務器
    3. 克隆foo.git到本地開發機的工作目錄
  2. 本地開發上登臺服務器
  3. foo.git回購推變化在登臺服務器上,登錄到工作目錄,並從foo.git
  4. lftp在共享主機-ed到共享主機(像你提到的上面)
  5. 一次,跑: mirror -R --only-newer --delete --parallel=10 /source/directory/ /target/directory

注意在mirror命令選項:

  • -R - 這推動source/directorytarget/directory。 (mirror從目標拉入到源代碼沒有這個,覺得r EVERSE)
  • —only-newer - 沒有這個選項,即使你只改變了一個文件,該mirror命令將發送的所有文件的源目錄到目標目錄。使用此選項時,只有更改的(較新的)文件通過電線傳輸。
  • —delete - 刪除不在源目錄中但仍在目標目錄中的文件。我的一個推動涉及刪除過期的資產。如果沒有這個選項,在執行mirror命令後,相同的文件會留在我的共享主機上。
  • —parallel=10 - 一次傳輸10個文件(默認爲1個)。這使得這個過程更快

雖然這是對我來說是什麼工作,我敢肯定有辦法改善這一點。我很感激這個問題,我想分享我的經驗。