单人网络应用程序的最佳版本控制?

时间:2008-12-01 13:34:17

标签: version-control

我只是在学习如何做事,并希望开始为网络应用程序使用某种版本控制。

最适合自己部署python或php web应用程序的是什么?我正在使用linux并拥有一个Linux服务器。

谢谢!

19 个答案:

答案 0 :(得分:18)

SVN, 您需要能够轻松使用SVN 部署您的网络应用。

因为它并不总是一项简单的任务,所以我只是指出 this article ,这可能对你的项目很感兴趣。

一般原则:

  • 在开发服务器上配置Apache,以便将检出的工作副本作为单独的子域进行检索。使用它,您可以简单地检查项目,它将自动启动并运行。无需触摸Apache配置。您需要 DNS wildcard entry ,以便dev.example.org的所有子域都转到您的开发服务器。

在本地使用上述Apache配置的唯一问题是DNS通配符。除非您的桌面由网络的DNS服务器分配了主机名,并且您可以在那里设置通配符,否则您将必须使用您的本地主机地址。您可以安装 dnsmasq 作为本地缓存DNS服务器,并将通配符放在您自己的计算机上

  • 使用dnsmasq,这样您就可以在自己的开发机器上实现相同的效果。这样您就可以在本地开发Web应用程序,而不需要中央开发服务器。在我的示例中,我将假设您使用subversion作为版本控制,但它与其他版本控制包(例如git或bazaar)几乎相同。

注意:(幽默
This other question on Subversion允许我指出这篇关于publishing its (source-controlled) data into production的文章,其中可能是我在该主题上看到过的最丑陋的图表; - )

diagram

答案 1 :(得分:14)

如果我没有碰到git,我无疑会选择使用SVN。话虽如此,我会推荐git。

答案 2 :(得分:8)

如今,我肯定会使用分布式版本控制系统。安装速度更快,因为您不需要设置版本控制服务器和所有内容,您通常需要做的就是在开发框中初始化某个目录以进行版本控制,然后您就可以开始使用了。它们似乎也是最近走的路。如果是2001年,我会推荐像Subversion这样的集中式系统。但是到了2008年,每个人都在转向分布式系统,用户界面和支持工具往往会变得更好。

以下是一些建议:

  • Darcs:易于学习并具备您通常需要的所有功能
  • Mercurial
  • Git:强大。可能需要一些时间来理解,但发展很快

通过常用的包管理解决方案,所有这三个都应该可以在基于Linux的操作系统中随时使用。

答案 3 :(得分:5)

SVN很棒。

答案 4 :(得分:5)

如今围绕DVCS进行宣传。

我更喜欢Bazaar

由于它的名称,支持,功能集,它在我的窗口$机器上运行良好。

答案 5 :(得分:3)

我正在使用unfuddle.com,我喜欢它。它对于一个人的网络应用程序是免费的

答案 6 :(得分:2)

答案实际上取决于你的思维方式。我个人在从SourceSafe切换到subversion时遇到了问题。如果你来自微软商店,我建议使用SourceGear Vault,对于< = 2个用户是免费的。如果你来自非微软区域,那么使用subversion将是首选。如果在linux上工作也请考虑git。 HTH,Valve。

答案 7 :(得分:2)

我个人使用monotone,学习DVCS绝对是前进之路。

答案 8 :(得分:1)

对于一个人的工作,几乎任何修订控制系统都能完成这项工作。当你进入多个人,并将其传递到多个存储库时,就会出现差异。

鉴于此,我会选择您的开发环境最支持的任何自由软件系统。我看到Subversion和Git提到了,两者都是不错的选择。

答案 9 :(得分:0)

SVN是我的第一选择。如果我必须选择第二个,我会去CVS。

答案 10 :(得分:0)

明确的Mercurial是一个不错的选择,快速,易于使用,非常适合单独工作,或与其他多个开发人员,完美的多平台,处理合并,分支等等,非常简单,基于插件,有很棒的工具,如此作为好的IDE插件(特别是Netbeans和Eclipse)。

强大,它的工作方式就像您期望这样的工具一样,而不是像SVN(我每天都有多年)......

Sun,Xen和Mozilla都在Mercurial上托管他们所有的回购。经过6个月的日常测试,我们目前正从SVN转移到Mercurial,没有任何遗憾。

答案 11 :(得分:0)

我无法按照要求回答问题,因为我不在Linux服务器上开发。

但也许这种体验在Linux世界中具有对应性。

我使用的是一个仅限局域网本地的IIS服务器(实际上是在一台旧笔记本电脑上,它不再运行但是作为一个小服务器工作)。我也在该服务器上安装了VSS。 IIS服务器,该服务器上的FrontPage扩展和VSS之间存在集成。

结果是我可以使用FrontPage来构建和编辑我的站点并构建一个始终在VSS中备份的开发映像,我可以从FrontPage中签出,签入和完成所有这些操作。

现在,我发布的方式是利用VSS的共享功能,因此我有一个部署映像,该映像与实际上是IIS网站的项目共享。我有一个deployment-image目录,我可以将最新的签入材料传输到(未更新的材料未更新)。然后,我使用FTP将部署映像部署到托管的公共网站(同样,仅传输新的和更新的文件)。

我提供了所有这些细节,以建议可能感兴趣的用例,即使Linux需要不同的解决方案方法。

如果我没有使用与W​​eb服务器集成的工具以及服务器上的源代码控制,我可以通过检查进出本地目录的VSS资料然后推送更新的VSS项目来做类似的事情。到IIS服务器的Web页面目录层次结构。工作流程更加笨拙。在这种情况下,我不会直接在开发Web服务器上编辑页面,除非我可以将签入页面锁定为只读或其他内容。

这是否暗示了在Linux服务器案例中可能具有吸引力的任何内容?

答案 12 :(得分:0)

我曾经使用Perforce并对此印象深刻。有GUI和命令行版本,它支持服务器和客户端的Windows,Linux,Mac和Unix。它与Eclipse集成,并具有用于编写自己的客户端应用程序的API(C / C ++,Ruby,Perl,Python)它在您需要购买许可证之前仅支持两个用户和五个工作区(但这属于此问题的范围)

答案 13 :(得分:0)

虽然我非常喜欢svn,但我发现在本地拥有整个存储库时很方便。 (同样适用于git,但我认为它的界面稍微不那么精致。)

答案 14 :(得分:0)

我完全同意SVN。命令行SVN也很简单。

答案 15 :(得分:0)

<强> SVN 即可。如果一个人不需要并发访问(这是你的情况),它很容易设置,因为根本不需要服务器。绝对是你的首选武器。

答案 16 :(得分:0)

今天最受欢迎的模特之一是Subversion。它通常很容易设置和安装。配置并能够处理多个平台。

答案 17 :(得分:-1)

Subversion是一个不错的选择。对于客户端,有TortoiseSVN(http://tortoisesvn.tigris.org/)与shell集成,让您通过右键单击文件夹来执行操作。为了与Visual Studio集成(我假设这是你的环境),有VisualSVN(http://www.visualsvn.com/)和AnhkSVN(http://ankhsvn.open.collab.net/)。对于服务器,您可以在此处找到一键式安装程序(http://svn1clicksetup.tigris.org/),即可快速完成设置。 VisualSVN还有一个(免费)服务器,你可以使用它提供自己的Web访问和安全性(而不是使用apache),并有一个mmc-snapin用于管理/创建存储库和用户。

答案 18 :(得分:-1)

CVS - 不,我不是在开玩笑。并不是说它更好(它不是)或最简单(它不是),但它在一天结束时并不重要。重要的是开始使用任何版本控制系统,即使它是一个开发人员的商店,即使它是CVS。