我需要在远程 FTP 服务器上设置一个工作副本(使用 TortoiseSVN 客户端)。
直接签出似乎不支持 ftp://... 位置作为目标文件夹,将远程文件夹映射到驱动器号允许执行签出,但文件实际上并未复制到指定的目标文件夹。
这甚至可能吗?如何?(到目前为止,我发现帖子表明它是,它不是......)
我需要在远程 FTP 服务器上设置一个工作副本(使用 TortoiseSVN 客户端)。
直接签出似乎不支持 ftp://... 位置作为目标文件夹,将远程文件夹映射到驱动器号允许执行签出,但文件实际上并未复制到指定的目标文件夹。
这甚至可能吗?如何?(到目前为止,我发现帖子表明它是,它不是......)
此方法使用过多的带宽、服务器空间和时间来通过 FTP 传输数据的多个副本。FTP 本身是不安全的,因此如果这是面向公众的,您将面临安全风险。服务器上也可能存在权限问题,SQLite(被工作副本库广泛使用)在这种模式下可能无法正常工作。
此外,您依赖于用户手动执行此操作,并在其 PC 上使用映射驱动器。如果需要更新时该用户不在身边,会发生什么?
如果不需要维护从 FTP 服务器到存储库的连接,最好使用 CI 系统甚至是简单的提交后挂钩脚本在提交后更新 FTP 服务器的内容。如果您使用 rsync,则只需传输已更改的位。
不确定我是否完全理解这个问题,但听起来你想将所有上传到 FTP 服务器的文件推送到 SVN 中?如果是这样,并且如果您在服务器上运行 Linux/Unix,请查看FSVS。
然后,您可以使用脚本进行设置,以使用简单的 bash 脚本自动将 FTP 文件夹推送到 SVN 服务器:
#!/bin/sh
# Only executes FSVS if FSVS reports outstanding changes
FSVS_CONF=~/.fsvs-conf
FSVS_WAA=~/.fsvs-waa
export FSVS_CONF FSVS_WAA
cd /var/ftp
FCOUNT=`/usr/local/bin/fsvs | grep -v 'dir.*\.$' | wc -l`
if [ $FCOUNT -gt 0 ] ; then
/usr/local/bin/fsvs ci -m "Automatic FSVS snapshot"
else
echo "Nothing changed"
fi