2009-11-02 166 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个)。这使得这个过程更快

虽然这是对我来说是什么工作,我敢肯定有办法改善这一点。我很感激这个问题,我想分享我的经验。