2011-08-22 87 views
0

我想仅将自发布的修订版发生更改后的网站文件移至使用SSH或FTP的托管帐户。主机帐户是基于Linux的,但安装了任何版本控制,因此我不能简单地在那里进行更新,而且解决方案必须在本地开发机器上运行。部署网站托管帐户的Mercurial更改

我基本上试图做什么http://www.deployhq.com/,但免费。我想发布更改而无需重新上传所有内容或手动选择要移动的文件。因为我们将使用Linux进行开发,所以我打算简单地使用一个比较版本并复制每个文件的bash脚本(怎么样?用bash不是那么棒),但是使用web界面的东西会很好。

在此先感谢您的帮助!

+0

如果您知道上次将哪个修订版推送到生产服务器,您可以执行诸如'hg log -v -r 10:tip'(用正确的修订版ID替换“10”),并解析'files:输出中的行,然后上传显示在那里的文件。 – geoffspear

+0

Thanks @Wobble!你能帮我一个脚本,通过ssh复制每个文件,而不必手动执行它? – jmotes

+0

谁拥有Mercurial服务器?你有任何控制仓库配置?你有没有想过使用钩子? – csano

回答

3

这看起来更像是一个rsync的工作,因为那个目标没有安装hg,所以对于hg来说更像是一个工作。

事情是这样:

rsync -avz /path/to/local/files/ remote_host:/remote/path/ 

这将传输的所有文件,递归(-r),从... /本地/文件/并将其放置在/远程/路径。 -az压缩并保持文件属性。

rsync负责仅传输已更改的文件。在指定源路径时务必注意尾部的斜线,它们很重要(请参阅上面的链接)。

+0

对不起,我忘了提及 - 托管公司声称,即使使用SSH访问,我也无法执行rsync,因为它没有安装在服务器上。 – jmotes

+0

我还没有用过rsync,但是托管公司的回复让我感到困惑。我想我应该仍然能够同步到服务器,即使我无法从服务器运行rsync。你能详细说明这一点吗? – jmotes

+0

你试过了吗?我认为它应该通过ssh工作。如果没有,请查看错误是什么。 –