我最近接受了一个没有版本控制的项目。我自己没有任何版本控制经验。我觉得这是实现这个项目的唯一方式(也许现在我想到的任何未来的项目 - 我总是相信自己太多了......)
我的问题是 - 我从哪里开始对已经投入生产的项目实施版本控制?请记住,我之前没有使用版本控制,所以它确实是两个不同的问题:
对于后台,该项目是一个使用javascript的php / mysql驱动的网站,我正在使用(Windows)XAMPP服务器,我非常渴望学习这个新的版本控制世界!
答案 0 :(得分:5)
恭喜你,你正朝着正确的方向前进!
您首先需要选择版本控制系统。我目前最喜欢的是Git。不幸的是,我不认为Git是一个简单的版本控制介绍。我也使用过Subversion和Perforce。
Subversion(http://subversion.tigris.org/)适用于许多平台,用于很多项目,并且有一些很好的GUI工具可用(例如Windows上的TortoiseSVN)。命令行工具也可用。它也是免费的。您可以在“本地文件系统”模式下运行它,这意味着您不需要设置单独的服务器。它离“它比CVS更好”的根源还有很长的路要走。
Perforce(http://www.perforce.com/)非常好。它的Windows实现似乎是最好的(最后我检查过,他们的跨平台GUI非常糟糕)。您主要使用GUI与其进行交互,但同样有命令行工具。它是商业软件,但开源项目可以通过联系公司获得免费许可。最大的障碍是您需要设置服务器。首先,您可以在开发的同一个盒子上运行服务器,但从长远来看,这可能是一个坏主意。我发现Perforce非常适合2-8人团队;我不知道它会有多好用。
Git(http://git-scm.com/)的一大优势是它几乎不需要设置。安装后,您可以在任何目录中执行git init
来创建新的git存储库。修订历史记录保存在项目的目录中。您可以从本地版本开始,然后从那里扩展。如果Git看起来很可怕,你也可以查看Mercurial(https://www.mercurial-scm.org/)。我没有使用它,但我知道它与Git有一些相同的基本原则。
避免使用CVS。它正在逐渐消失,除非他们需要这样做,否则没有新项目应该使用它。
将源代码管理添加到现有项目很容易。困难的部分是确保每个人都愿意使用源代码控制。如果你是独自工作,那只是个人纪律。但是,如果你是一个团队的一部分,并且有些人有保留,你就会遇到问题。尽量让每个人都参与进来,并尝试回答他们的问题。如果人们不知道如何使用工具,他们根本就不会使用它。
答案 1 :(得分:3)
从这里开始:http://svnbook.red-bean.com/
我发现SVN是最容易使用的版本控制系统,尤其适合初学者。开始起来非常简单,你必须做出的唯一真正决定就是在哪里托管你的东西。有几个免费的svn服务器可用,但如果你真的认真对待你的工作,你应该自己托管。
答案 2 :(得分:2)
首先要做的是选择版本控制范例(集中式与分布式)。要回答这个问题,您需要了解您的团队以及您打算如何处理签入,签出,合并和分支。选择范例后,您可以选择版本控制系统。主流系统是用于集中版本控制的Subversion和用于分布式版本控制的Git和Mercurial。
如果项目是实时且有效的,那么这应该是您对所使用的任何版本控制的初始登记。您需要一个可靠的基线,您可以恢复并且有0个工作来部署有效的东西。如果你的项目不起作用......好吧,祝你好运。您可能需要签入以开始使用版本控制,然后决定如何继续(使项目进入稳定且运行状态,然后重新启动存储库或让您的初始签入是一个损坏的系统)。
如果团队的其他成员没有看到版本控制带来的好处,我建议您在自己的计算机上安装自己的系统,至少可以将它用于自己的工作。
答案 3 :(得分:2)
第1步:下载Mercurial。
步骤2:在您喜欢的命令行中,转到源目录的根目录并键入hg init
。
步骤3:执行make clean
或等效(即您想要的只是源,没有生成的文件)。
第4步:输入hg addremove
。
第5步:输入hg commit
。
从这一点开始,您可以:
hg diff
或hg status
。hg commit
。hg update -C -r 0
恭喜,您现在正在使用版本控制:它真的不是那么难,它非常非常有用(如果没有其他原因,您可以查看您所做的更改,看看它们是否有意义。)< / p>
在某些时候,您可能希望了解分支(如果只是为了在另一台计算机上拥有存储库的备份副本),此时您可以转到文档或book。< / p>
答案 4 :(得分:2)
为管理层和/或您的同事提供一些抵制做好准备。管理层可能不希望将资源投入存储库机器 - 这些东西需要安装,维护,备份等。或者他们可能会反对您花时间在像RCS这样的“额外”上。
您的同事,特别是如果他们不熟悉任何RCS,可能会拒绝使用它,或者抱怨它太难用了。任何新工具都有学习曲线,源控制系统也不例外。但是,值得花时间学习。
我的建议是选择一个 - 任何一个你想要的 - 并开始使用它。不要担心第一次100%完美,它可能不会比你现在的更糟糕,这是一个错位的击键远离遗忘。
玩它。将文件检出到一个单独的工作区并进行修改,知道这无关紧要;你总是可以还原它。学习如何使用一些GUI前端的新工具(我喜欢'svn diff --diff-cmd = kdiff3',我自己)。到达您知道如何办理登机手续的地步。 out,标记东西,分支和合并。然后告诉你的同事。
就个人而言,我喜欢svn,但我没有选择它;它选择了我。
答案 5 :(得分:1)
我不知道php等是否有类似内容,但这里有一个有趣的资源是"Brownfield Application Development in .NET"。在许多方面,这仅仅使用.NET作为示例;这本书的大部分内容都与你提到的政策有关:
以及随之而来的所有顾虑/考虑。
部分与代码有关;但也涉及“人”因素;同事,经理等我强烈推荐它;但你可能认为.NET背景不适合你(这对我来说很合适;-p)。
答案 6 :(得分:0)
您可以在此处查看:git-for-beginners-the-definitive-practical-guide
这是一个分布式版本控制系统,目前有Git on Windows的良好Windows支持和TortoiseGit
的shell扩展答案 7 :(得分:0)
如果要置于版本控制下的项目有一些版本,并且这些版本可用作tarfiles(例如project-0.1.tar.gz
,project-0.2.tar.gz
,project-0.3.tar.gz
,.. 。)您可能需要考虑将这些版本导入您选择的版本控制系统。例如,Git在import-tars.perl
目录中有import-zips.py
和contrib/fast-import/
,并且可以很容易地为git fast-import编写其他编程语言中的其他文件的支持。
旁注:我首选的版本控制系统是 Git 。
另请参阅: Good link or book for basics and theory of version control问题。
答案 8 :(得分:0)
好的,回答你的问题,你如何将项目置于版本控制之下?
这并不难,一旦你选择了版本控制实用程序(无论是git,svn,hg,bzr ......等等),通常会有一两个命令来初始化存储库,然后将所有相关文件添加到它。 / p>
例如,在git中它可能类似于:
$git init
$git add --all
$git commit -m"First commit"
现在,关于选择版本控制实用程序,这是一个棘手的问题,并且在很大程度上取决于您的需求。您可能想看看这个问题:
Popularity of Git/Mercurial/Bazaar vs. which to recommend
您应该考虑选择的唯一工具是:
git
svn
(Subversion)hg
(Merculiar)bzr
(Bazaar)mtn
(Monotone)其他一切都是旧的或商业的。
svn遵循服务器 - 客户端模型;有一个中央存储库。如果您是一个单人团队,那么这对您来说唯一意味着您必须设置服务器并确保它始于计算机。虽然我听说你可以取消服务器。一些谷歌搜索出现this guide for using svn without a server
所有其他工具都遵循分布式模型,如果你是一个单独的团队,这对你来说唯一的意思就是没有服务器可以设置。
svn的优势在于它已经存在了一段时间,并且具有许多gui前端和更好的IDE集成。
我无法将git与hg(merculiar)进行比较,因为我没有使用后者,但git与svn和hg相比具有独特的存储模型。
据说bzr更容易使用,但速度较慢(用python编写)。我个人对git感到满意,但你应该做自己的研究;或者只是选择一个并坚持下去。据我所知,他们都是成熟稳定的。
答案 9 :(得分:0)
我从实用系列中学到了这些概念: subversion的例子,他们也有关于GIT的书籍。
答案 10 :(得分:0)
我只有SourceSafe和SVN的经验。
SourceSafe似乎有破坏它自己的数据库的问题,在一个5人的团队我们每月修复一次db。这很容易,但仍然是你不应该处理的事情。标记代码也很困难,并将该标签用于任何实际的标记。
SVN很不错,在Linux或Windows上安装很简单。大多数IDE都有一个插件,如果您使用Windows,则有一个Explorer扩展(TortoiseSVN),允许您直接从Windows资源管理器执行所有操作。每个操作系统都有很多SVN工具,它得到了很好的支持。 SVN还与TRAC(错误跟踪系统)和Bugzilla集成,因此您可以将工作票与代码绑定。
我会说[你如何使用版本控制可能就像你使用哪个包更重要] [2]。将它简单地用作库是一个非常基本的应用程序,但对于1-2人团队制作网站或应用程序,你将不会维护版本和版本,你会没事的。
在版本控制方面,任何东西都比没有好。