我在PHP网站上与合作伙伴一起为客户工作。我们有一个共同的Mercurial存储库(在Bitbucket上),包括本地副本和实时站点。我们只有FTP访问实时站点(由于它只是一个FTP主机包,因此无法更改)。
我希望能够将更改从存储库推送到实际站点。
到目前为止,我只是跟踪repo中已更改的文件并使用FileZilla手动复制它们 - 这是一个容易出错且烦人的任务。我的想法是,在本地安装远程位置(即使用CurlFtpFS)并告诉mercurial自动将更改的文件复制到站点。理想情况下,我希望能够指定哪些更改,但这将是一个奖励。如果同步中的文件的本地状态是同步的就足够了。
有没有什么好方法可以使用linux命令行工具?
答案 0 :(得分:7)
我的第一个建议是,如果可能的话,获得一个允许更多访问的包。 FTP只是残酷的。
但是既然你正在寻找一个真正的问题答案,我有两个想法:
我建议调查mercurial FTP Extension。我个人从来没有使用它,因为我从来没有陷入仅限ftp的情况(至少不是很长时间),但看起来很有希望。看起来如果你确定你标记你的生产版本它会很好地为你工作。 (确保使用-uploaded param)
此外,如果您只想在产品环境中安装提示,那么您可以在几天前查看Martin Geisler made on the bitbucket user group的建议。基本上他的建议是利用bitbucket的“ping url”功能。您必须编写一个服务器端脚本/ url处理程序来接受ping,然后从bitbucket(作为zip)获取提示然后解压缩/解压缩它。这有点复杂,但如果您正在寻找完全自动化,并且提示始终是最好的,这可能对您有用。
答案 1 :(得分:2)
一个概念是使用hg archive
命令:
hg archive /path/to/curlftpsfs
会将您的仓库的快照放在该位置 - 但它会覆盖已存在的任何文件。
另一种选择是在相同的/path/to/curlftpsfs
中创建Mercurial克隆,然后在本地系统上安装一个hg pull ; hg update
并安装远程克隆。最初设置它意味着转移整个事物,但随后你只会发送增量。
有些人不喜欢这最后一个选项,因为它也暴露了整个/.hg
存储库,但你可以阻止访问Web服务器上的那个。
答案 2 :(得分:1)
在从AWS切换到仅提供ssh / ftp的本地网络托管之后,我偶然遇到了这个问题。
我以前在AWS上使用“hg pull; hg update -C”更新生产站点的方法不能再用于新的Web托管。他们没有为共享主机安装mercurial。
因此,我所做的是使用ftp将远程位置安装到本地计算机(即您的笔记本电脑),然后在您的计算机上本地运行hg pull和update命令,其中安装了远程ftp站点。
答案 3 :(得分:0)
Windows解决方案:
BeyondCompare(http://www.scootersoftware.com/)是一款非常棒的软件。除了很棒,它可以将您的本地文件夹镜像到FTP站点。它正在比较文件,只传输新内容。