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