我们目前使用Subversion协调两个开发人员之间的网站开发。在我们之间,我们可能会处理一堆文件,检查我们的更改并使用FTP客户端以设定的时间间隔上传到生产服务器。
我觉得我在这里遗漏了一些明显的东西,但我们真的需要FTP吗?让我们说我们在我们的存储库上进行了一些更改是否有一种方法我们可以将所有已经从某个日期更改的文件整理到现在,然后将这些文件推送到一个包含生产站点的单独存储库?目前我们正在使用SVN日志查看哪些文件已更改,然后我们在FTP客户端中手动选择和上传。
我们处理的存储库已经在生产服务器上,而不是在IIS引用的文件夹中运行该站点。
任何想法都会非常感激!
编辑1月16日------------------------------
Subversion的FTP插件怎么样,以便我可以进入“日志消息”区域来识别在给定时间段内已更改的文件,选择它们并FTP到生产?这样的工具是否存在?
顺便说一句:这里有很多有用的评论,谢谢大家的贡献。
答案 0 :(得分:1)
如果您想要向服务器来回发送文件而不一定需要通过版本控制,FTP或SCP仍然很方便。 Subversion是一个版本控制工具,不应该用作未版本化文件的传输管道。所以我的回答是你应该保留两者。
答案 1 :(得分:1)
如果您使用FTP来推送编程更改,那么最好使用像Subversion这样的版本控制系统。 Subversion不仅处理最新的代码问题,还处理两个人同时更新同一文件的情况。此外,它还为您提供了版本历史记录,因此您可以查看随时间变化的原因以及原因。
在开发人员之间共享库对象(.jar
文件,.dll
,.so
等)时,FTP非常有用。您没有相关的开发历史记录可以从文件中提取,并且您无法直接修改这些文件。此外,这些文件会很快变老,变得过时,并在您的存储库中占用大量空间。
小心FTP。它不是一个安全的协议有人可以收听密码。请改用SCP或SFTP。这些与sshd
守护程序相关,因此如果您能够使用ssh
,则可以设置scp
和sftp
。
除了使用FTP之外,另一种可能性是使用Dropbox或等效程序来共享这些文件。 Dropbox会自动更新所有开发人员之间的文件,因此他们不必记住是否提取了最新的代码。此外,还有一些版本控制方面。您可以查看某些版本历史记录,甚至可以获取该文件的旧版本。 Dropbox是安全的,所有传输都是加密的。 Dropbox服务器上的文件甚至是加密存储的(尽管由于能够在用户之间共享文件,Dropbox本身确实保留了解密这些文件的密钥)。
答案 2 :(得分:1)
首先:您必须了解差异并且永远不要混合源代码管理和部署管理 - 它们是由不同工具执行的不同任务和工作。
虽然SCM可以(以某种方式)用作部署工具,但由于此(部署)区域中的SCM限制,这不常见。
回到你的问题。
如果RepoServer和ProdServer是不同的主机,您可以使用它们支持的任何底层传输。 FTP(如果你有选择)不仅最好不仅来自安全POV,而且来自可能的灵活性 - 将某些树上传到目标的常见任务对于纯FTP,FTP来说并不容易和透明会话自动化程度很低。恢复 - 如果您可以使用其他传输,则至少可以尝试将部署过程用于其他传输。
答案 3 :(得分:0)
FTP是传输文件的好方法。这就是它的目的。 SCM用于管理源代码。您需要一些部署管理,如果可能,它应该是自动化的。如果是我,我会编写一个脚本来从svn获取更改的文件,并自动将它们部署在SFTP或FTPS上。每次都以相同方式进行部署的脚本是理想的。
您也可以查看rsync。它很快,发送差异,并且是安全的。
根据我的经验,当您将大型文件(如VM图像或视频)添加到源代码管理时,它会降低开发速度,尤其是在您创建分支或将回购提取到新框时。
另一位撰稿人建议使用Dropbox进行SCM和部署管理。我在Dropbox上皱眉了解源代码。它不提供您将用于来自SVN的合并功能。我在生产中使用Dropbox进行廉价的自动备份。我让WHM / Cpanel删除了Dropbox文件夹中的备份。请务必关闭网络同步,因为大多数数据中心都不喜欢通过内部网络传输的UDP数据包。
答案 4 :(得分:0)
是。你的问题的答案是肯定的。 Subversion可以取代FTP。
答案 5 :(得分:0)