我有一个网络开发者。客户端使用不允许shell访问的共享主机,因此无法访问SVN,Git等。我试图说服他转移到允许它的许多廉价选项之一,但他不会这样做它。如果我在登台服务器上使用版本控制,是否有任何工具可以让我通过ftp将更改复制到生产?本地我有mac和amp; windows,登台服务器是linux,所以可以在任何平台上运行......
答案 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)
您可能需要编写能够
的批处理文件答案 5 :(得分:0)
这个问题(和答案)刚刚帮助我,因为我在一个单独的服务器和lftp上通过gitolite
实现了版本控制。
这就是我的所作所为:
gitolite
在我的ubuntu登台服务器上
foo.git
)foo.git
克隆到登台服务器上的工作目录foo.git
克隆到本地开发机器上的工作目录foo.git
repo
foo.git
lftp
- 加入共享主机(如上所述)mirror -R --only-newer --delete --parallel=10 /source/directory/ /target/directory
强> mirror
命令选项的注释:
-R
- 这会将source/directory
推送到target/directory
。 (mirror
在没有这个的情况下从目标转到源,请考虑r
everse)—only-newer
- 如果没有此选项,即使您只更改了一个文件,mirror
命令也会将源目录中的所有文件发送到目标目录。使用此选项,只有更改的(较新的)文件通过网络传输。—delete
- 删除不再在源目录中但仍在目标目录中的文件。我的一个推动涉及删除过期的资产。如果没有此选项,执行mirror
命令后,相同的文件将保留在我的共享主机上。—parallel=10
- 一次传输10个文件(默认情况下不传输1个文件)。这使得这个过程更快虽然这对我有用,但我确信有办法改进这一点。我很感激这个问题,并认为我会分享我的经验。
答案 6 :(得分:0)
Rsync将通过FTP连接执行此操作。如果您使用的是类似Unix的系统,则可能已经安装了它。