如何通过ftp进行版本控制?

时间:2009-11-02 14:05:52

标签: linux version-control deployment ftp

我有一个网络开发者。客户端使用不允许shell访问的共享主机,因此无法访问SVN,Git等。我试图说服他转移到允许它的许多廉价选项之一,但他不会这样做它。如果我在登台服务器上使用版本控制,是否有任何工具可以让我通过ftp将更改复制到生产?本地我有mac和amp; windows,登台服务器是linux,所以可以在任何平台上运行......

7 个答案:

答案 0 :(得分:3)

使用Linux登台服务器,您可以保留一份专门用于该主机的单独签出副本,然后使用实用程序将该目录镜像到主机服务器。

LFTP对这类事情非常有用。它适用于大多数Linux发行版,并包含一个“镜像”功能:

  

将指定的源目录镜像到   本地目标目录。如果目标          目录以斜杠结尾,源基名称附加到   目标          目录名称。源和/或目标可以是指向的URL   目录。

答案 1 :(得分:1)

您需要某种ftp镜像软件。没有测试过,但快速搜索给了我this Java application。您可以通过最新的签出存储库运行它。

答案 2 :(得分:1)

保持SVN repo和FTP副本同步的好处是svn2web。我是否可以建议为生产副本创建单独的分支,并合并到该分支以上传到生产服务器。

答案 3 :(得分:0)

没有找到/实现一些支持不可变版本的基于FUSE的CoW文件系统..我只是找到另一个(更适合开发人员的)主机。据我所知,没有FTP服务器支持这种本地,我也不能想到任何优雅的方法将它放在脚本hackery的位置。

我错了。

答案 4 :(得分:0)

您可能需要编写能够

的批处理文件
  1. 导出SVN存储库
  2. 通过FTP将导出的文件上传到Linux服务器

答案 5 :(得分:0)

这个问题(和答案)刚刚帮助我,因为我在一个单独的服务器和lftp上通过gitolite实现了版本控制。

这就是我的所作所为:

  1. Set up gitolite在我的ubuntu登台服务器上
    1. 在登台服务器上创建了基本仓库(即foo.git
    2. foo.git克隆到登台服务器上的工作目录
    3. foo.git克隆到本地开发机器上的工作目录
  2. 本地开发
  3. 在暂存服务器
  4. 上推送更改为foo.git repo
  5. 在登台服务器上,登录到工作目录,并从foo.git
  6. 引入更改
  7. lftp - 加入共享主机(如上所述)
  8. 进入共享主机后,运行:     的 mirror -R --only-newer --delete --parallel=10 /source/directory/ /target/directory
  9. mirror命令选项的注释:

    • -R - 这会将source/directory推送到target/directory。 (mirror在没有这个的情况下从目标转到源,请考虑r everse)
    • —only-newer - 如果没有此选项,即使您只更改了一个文件,mirror命令也会将源目录中的所有文件发送到目标目录。使用此选项,只有更改的(较新的)文件通过网络传输。
    • —delete - 删除不再在源目录中但仍在目标目录中的文件。我的一个推动涉及删除过期的资产。如果没有此选项,执行mirror命令后,相同的文件将保留在我的共享主机上。
    • —parallel=10 - 一次传输10个文件(默认情况下不传输1个文件)。这使得这个过程更快

    虽然这对我有用,但我确信有办法改进这一点。我很感激这个问题,并认为我会分享我的经验。

答案 6 :(得分:0)

Rsync将通过FTP连接执行此操作。如果您使用的是类似Unix的系统,则可能已经安装了它。