Web项目的源代码控制

时间:2020-03-05 18:38:38  来源:igfitidea点击:

我正在寻找有关如何为Web项目实施版本和源代码控制的好的建议。

我研究了Subversion,但它似乎只处理代码。我真正在寻找的东西不仅可以使用源代码,而且可以使用其他网络资产(例如艺术文件,影片剪辑,甚至数据库备份)进行良好的版本控制,分支,归档等。

我们在Mac / PC混合环境中工作,因此Visual Source Safe或者任何纯粹基于PC的产品都是行不通的。有什么帮助吗?

解决方案

回答

是什么让我们认为无法使用Subversion版本,分支,归档等...图形文件?

我已经在我的程序中使用了Subversion,其中包括图形,而且似乎可以很好地处理它们。 (嗯,差异化是个问题,但是我还没有听说过一个好的图像差异化程序。)

回答

我们可以将任何类型的文件添加到Subversion。如果它们是二进制文件,则保存的版本仅是副本,而文本文件仅保存差异。但是,将其他类型的文件保存在Subversion中是完全可以的。

使用shell加载项(在Windows上为Tortoise)使此操作相当容易。我没有使用Mac客户端的经验,但是我可以想象有很多选择。

回答

我仍然使用Subversion,在Windows上我使用TortoiseSVN,其中包括专门用于查看图像文件之间差异的TortoiseIDiff。

回答

我使用过的所有源代码控制系统(CVS,Subversion和git)都将处理二进制文件和文本。如果我们正在与版本控制经验有限的设计师合作,那么现在Subversion可以提供更好的GUI选择。在PC上,无法替代TortoiseSVN,对于Mac,我听说过有关Versions的好消息。

回答

其他人指出,Subversion及其同类在处理二进制文件时没有问题(尽管在空间效率上不及文本)。但是,数据库备份需求更加有趣,而我已经不止一次地遇到了这种需求。

理想情况下,我希望用文本表示数据库的两个版本(模式和数据)之间的差异。应用这种差异会使我们从一个版本转到另一个版本。源代码控制引擎可以在每次提交时将其存储。 Rails迁移是处理模式差异的一种不错的方法,但是我还没有看到任何能够以简单文本格式处理完整模式和数据差异的方法。

失败了,我想我们可以签入文本数据库转储,就像MySQL为MySQL生成的mysqldump命令类型一样。源代码控制工具的diff算法可能无法有效地处理它,但是与签入不透明的二进制数据库文件相比,它可能需要更少的空间。

回答

我已经使用git几周了,并且对此非常满意。它是跨平台的,可以很好地处理冲突,并为每个人提供了自己完整的版本存储库,即使他们没有连接到网络,他们也可以签入更改。

现在,许多备受瞩目的项目都在使用git,包括Ruby on Rails。

回答

Subversion具有针对Mac OS X的预编译二进制文件。也可以通过MacPorts和Fink获得。有几个很棒的界面(除了命令行)。 svnX是一个开放源代码客户端,已经存在了一段时间,并且如前所述,Version是一个非常漂亮的封闭源客户端,目前处于测试阶段。我们仍然应该熟悉命令行,因为我们会遇到这些GUI客户端无法解决的问题。

Subversion很好地处理了二进制文件。过去,我已将其用于Web项目,并使用使用它们的代码成功地对图像和Flash文件进行了版本控制。

回答

Mac有一个叫做" Version"的东西,它是一个颠覆的UI,例如" Tortoise SVN",我发现它友好且有效。

我也在Mac / PC环境中工作(当当风骚的孩子),颠覆确实是要走的路。我将所有文本,图像,查询和代码保留在其中。

一旦我解释了这个概念,我的非技术人员便很容易使用。

回答

我一定会给Subversion再看一遍。我知道这可能很无聊,但是阅读SVN书很多人。

我个人使用Mac版本。它具有与Subversion仓库交互的非常好的UI。

我要做的是将项目的/ Trunk目录检出到站点的根目录中。这样,我可以测试并运行工作副本,作为我的实际开发设置。准备好上线后,我可以从repo sans .svn文件夹中导出文件,并将其上传到生产或者登台服务器。希望这使我们对使用Subversion可以拥有什么样的工作流有所了解。

回答

我认为svn是一个不错的选择,有些用户甚至可以使用git进行本地分支。我在Mac上运行eclipse,所以我使用git,svn命令行和颠覆性组合(svn的eclipse插件)。这是mac svn客户端的列表(大多数是跨平台的)

http://scplugin.tigris.org/(例如TortoiseSVN,但功能不丰富)
http://subcommander.tigris.org/
http://rapidsvn.tigris.org/
http://www.versionsapp.com/
http://www.syncrosvnclient.com/(并非免费$ 59)
http://www.lachoseinteractive.net/en/community/subversion/svnx/features/

回答

要将源代码控制与数据库一起使用,我们可能需要生成模式和数据的基于文本的表示形式。我们应该每天自动运行一次并将更改提交到存储库。

请注意,DBMS可能会更改数据库中的行顺序,以使某些操作更有效。这可能导致两个转储看起来不同,而实际上没有不同的数据。确保创建数据转储的对象按每个表的主键对其进行排序,并且表集按定义的顺序排列,以使在进行diff 2转储时看到的更改只是重要的更改。