Web项目的源代码控制

时间:2008-08-08 15:27:47

标签: svn macos version-control

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

我研究过subversion,但似乎只关注代码。我真的在寻找可以做好版本,分支,存档等的东西,不仅有源代码,还有艺术文件,影片剪辑,甚至数据库备份等其他网络资源。

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

11 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:5)

是什么让你认为你不能使用Subversion版本,分支,存档等...图形文件?

我已经将Subversion用于我的程序,其中包括图形,它似乎处理它们就好了。 (好吧,差异是一个问题,但我没有听说过一个好的图像差异程序。)

答案 2 :(得分:5)

您可以将任何类型的文件添加到subversion。如果它们是二进制文件,则保存的版本只是一个副本,而文本文件只保存差异;但是,在subversion中保存其他类型的文件是完全没问题的。

使用shell加载项(Windows上的Tortoise)使这很容易。我没有使用Mac客户端的经验,但我认为那里有选择。

答案 3 :(得分:2)

其他人已经指出Subversion及其亲属在处理二进制文件时没有任何问题(虽然不像文本那样具有空间效率)。数据库备份要求更有趣,而且我不止一次遇到过。

理想情况下,我希望在数据库的两个版本(架构和数据)之间进行差异的文本表示。应用这样的差异将带您从一个版本到下一个版本。源控制引擎可以在每次提交时存储它。 Rails迁移是处理模式差异的一种很好的方式,但我还没有看到任何可以用简单文本格式处理完整模式和数据差异的东西。

如果不这样做,我想你可以检查一个文本数据库转储,就像MySQL生成的mysqldump命令的类型一样。源代码控制工具的diff算法可能无法有效地处理它,但它可能比检查不透明的二进制数据库文件所需的空间更少。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我已经使用git几个星期,并且已经非常喜欢它。它是跨平台的,非常好地管理冲突,并为每个人提供他们自己的完整版本存储库,以便他们可以检查更改,即使他们没有连接到网络。

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

答案 6 :(得分:0)

Subversion有pre-compiled binaries for Mac OS X。它也可以通过MacPortsFink获得。除了command-line之外,还有一些很棒的界面。 svnX是一个已经存在一段时间的开源客户端,如上所述Versions是非常漂亮的封闭源客户端,目前处于测试阶段。您仍然应该get familiar with the command-line,因为您将遇到这些GUI客户端无法解决的问题。

Subversion handles binary files非常好。我过去曾将它用于Web项目,并使用使用它们的代码成功地对图像和Flash文件进行了版本化。

答案 7 :(得分:0)

Mac有一个名为“Version”的东西,它是像“Tortoise SVN”这样的颠覆UI我发现它用户友好且有效。

我也在Mac / PC环境中工作(dang artsy kids),颠覆真的是要走的路。我将所有文本,图像,查询和代码保存在那里。

一旦我解释了这个概念,我的非技术工友就会发现它很容易使用。

答案 8 :(得分:0)

我肯定会给颠覆再看看。我知道这可能很无聊,但阅读SVN书会有所帮助。

我个人使用Mac版本。它有一个非常好的UI用于与subversion repo交互。

我所做的是将项目的/ Trunk目录签出到站点的根目录。这样我就可以测试并运行工作副本作为我的实际开发设置。一旦我准备好上线,我就可以从repo sans .svn文件夹中导出文件并将其上传到生产或登台服务器。希望这能让您了解使用subversion可以实现的工作流程。

答案 9 :(得分:0)

我认为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/

答案 10 :(得分:0)

要对数据库使用源代码管理,您可能需要生成基于文本的架构和数据表示。您应该每天自动运行一次并将更改提交到存储库。

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