将版本控制添加到现有项目

时间:2008-09-22 20:30:38

标签: svn version-control

我正在开发一个已经发展到相当规模的项目,我是唯一的开发人员。我们目前不使用任何版本控制,但我绝对需要启动。

我想使用Subversion。将现有项目转移到它的最佳方法是什么?

我有一个测试服务器,用于开发新功能,然后将这些文件传输到2个生产服务器。是否有一个工具可以自动上传到测试,然后部署到实时服务器?

所有这些都是在ASP.NET中使用Visual Studio开发的(如果重要的话)

22 个答案:

答案 0 :(得分:16)

稍微扩展上一个答案...

1)创建一个新的SVN存储库
2)将你迄今为止所用的所有代码提交给它 3)再次检查所有代码OUT,在您的开发机器上创建一个工作副本
4)工作!

这绝对不是障碍,真的。

答案 1 :(得分:7)

我没有看到有人解决你的问题/帖子的这一部分:

  

是否有可以自动化的工具   上传到测试,然后   部署到实时服务器?

一个问题是,Subversion会在您的工作副本中创建隐藏的.svn文件夹。其中一个解决方案是使用svn export命令。这将在没有.svn文件夹的另一个目录中创建存储库的副本。

据我所知,没有自动化工具。您可以创建一个批处理文件,该文件将发出如下所示的svn export命令:

svn export C:\MyReporitosy\Path C:\DestinationPath

只需将此作为部署过程的一部分。确保从此导出的目录而不是您的工作副本部署代码。那你应该没问题。

答案 2 :(得分:4)

+1 Matt Howell的答案。

我不知道有多少次我通过在repo中创建目录,将新项目导入其中,然后再次检出来添加新项目。这就是Matt的答案最好的原因:

  1. 我创建了一个名为FRED的项目并做了一些工作

  2. 我在SVN repo中创建一个目录,并将FRED导入其中。

  3. 但是FRED目录仍然没有源代码控制 - 它缺少.svn文件,所以我需要检查它,进入一个新目录,让我们称之为FRED-NEW,重新创建所有文件

  4. 然后我需要删除FRED,让我感到紧张的是一路上丢失或损坏的东西。

  5. 正如Matt所说,请查看更早的步骤,而SVN回购中的文件夹仍为空:

    1. 在SVN中创建一个目录并检查它是否为FRED-NEW。

    2. 将FRED-NEW / .svn复制到FRED /

    3. 右键单击“添加所有文件”。 FRED现在处于源代码管理之下,无需重新创建和删除。

    4. 还是更好:

      1. 在SVN中创建一个目录,然后在向其添加文件之前,直接检查空目录。

      2. 右键单击“添加所有文件”。

      3. 此外,如果您使用CLI并且在提交新文件之前没有想到这一点,请参阅下面的alroc答案: - 在结账时使用FRED。

答案 3 :(得分:3)

您应该查看Visual SVN,它可以无缝集成到Visual Studio中。

答案 4 :(得分:3)

将您现有的基地导入SVN存储库,检查它并重新开始工作。

答案 5 :(得分:2)

除了技术问题,只需获取SVN并开始使用它。您将看到直接的好处(查看代码历史记录,差异调试,看看哪些更改引入了上周没有出现的错误),您永远不会想要回顾。

我个人不喜欢我在IDE中集成的源代码控制。我使用与Windows资源管理器集成的Tortoise SVN,允许您直接从操作系统签入,区分,合并等文件。

答案 6 :(得分:2)

不需要SVN服务器 使用Tortoise Mercurial http://sourceforge.net/project/showfiles.php?group_id=199155

设置本地回购
1)下载并安装
2)打开资源管理器窗口到项目的基本目录
3)右键单击 - > TortoiseHG - >在此创建存储库 - >好吧
4)右键单击 - > HG承诺......
5)键入您的提交注释,选择要跟踪的文件,然后单击“提交”

通过文件共享设置远程仓库(可用的其他传输方法)
1)打开资源管理器窗口到远程文件夹
2a)右键单击 - > TortoiseHG - >克隆存储库
2b)或者,只需将本地仓库复制到

即可

提交本地后更新远程仓库 1)打开资源管理器窗口到远程文件夹
2)右键单击 - > TortoiseHG - >同步
3)在Pull菜单中选择“Update to new tip” 4)在“远程路径:”输入框中输入本地仓库的路径 5)单击“拉”

答案 7 :(得分:1)

Subversion服务器安装...... Subverison Client Libraries安装...

安装Ankh以与VS集成 安装Tortoise以进行文件管理器集成

在文件管理器中,右键单击顶层方向,使用解决方案...导入...

答案 8 :(得分:1)

我想知道你为什么选择了Subversion?如果您的项目没有使用任何vc,您可能应该考虑使用Mercurial或Git。

他们更强调的是,他们不需要中央存储库,这意味着您的程序员可以检查您的项目,去他们家,工作(无需连接到您的服务器),第二天来回到办公室并同步他们的存储库。

如果SVN不是市长要求,我建议考虑任何一个dvc系统。

答案 9 :(得分:0)

版本控制和部署是两个独立的问题(尽管良好的版本控制系统可以使部署更加一致,可重现的过程)。设置版本控制服务器后,可以使用一组简单的脚本/批处理文件自动检查代码并将其部署到服务器。

答案 10 :(得分:0)

问题显然在于Subversion(SVN是别名)。

以下是步骤:

1) Create a New Repository (if needed,  if using VisualSVN Server then very easy)
2) Right click on the Folder of which you want to put the folders and files into your repository 
3) With having the right click menu  go to TortoiseSVN
4) Choose IMPORT 
5) Place in trunk (best practice)

e.g.   https://computername:8443/svn/MyCoolCode/trunk

答案 11 :(得分:0)

我最近开始喜欢Bazaar的简单性,以便在已经破解应用程序一段时间后解决启动版本控制的问题。

有了集市,它实际上只有几个简单的命令: 1)bzr init 2)bzr添加[你感兴趣的文件] 3)bzr commit

请注意,设置任何中央存储库。但你也可以这样做。

关于将它用作部署工具,我很确定我不久前读过它。无论如何,文档真的很棒。

答案 12 :(得分:0)

除了关于将项目置于源代码管理下的实用性的所有其他评论之外,我建议您查看Streamed Lines: Branching Patterns for Parallel Software Development作为代码行和分支策略的指南 - 可能会为您节省一些以后工作​​。

同样Eric Sink 收集了很多帖子,介绍了各种源代码控制概念 - Source Control HOWTO

答案 13 :(得分:0)

要添加到之前的答案,我还建议明显(但应该明确)建议:

  • 选择要在您的存储库中导入的项目的稳定状态(您选择的任何工具)
  • 立即创建标签(或SVN中的标签),一旦导入完成并“检查”(如'编译?','我们是否需要所有设置文件?',...)
  • 想想在这个项目的生命周期中你需要做的不同的'开发工作',这将让你很好地了解你的分支应该是什么样的。
    (正在开发下一个版本的旧版本的维护分支,合并分支以隔离复杂的合并,补丁分支,......)

现在,小心:

  

是否有一个工具可以自动上传到测试,然后部署到实时服务器?

您的问题的一部分是指“发布管理”流程,非常与“版本管理”不同。
我不确定您选择的版本工具是否可以积极帮助。特别是当您考虑生产服务器上应该没有版本控制工具时(为了将生产服务器与任何工具的依赖关系保持在最低限度:只允许监控和报告工具,除了您的程序之外 - 这里是一个Web服务器 - )

答案 14 :(得分:0)

1)创建一个新的存储库 - 您可以在测试服务器上创建它,然后将其传输到专用服务器/ NAS,如果它对您来说简单。 2)将所有现有源代码导入存储库。 3)您可以使用'svn'命令行工具(及其相关工具,如svnadmin)创建一个批处理文件,该文件将自动执行上载和部署过程(后者与编译器结合使用)。

您可以在此处找到更多信息: SVN book - 开始阅读它 - 你不需要全部阅读它来启动并运行svn。 MSBuild - 微软的构建自动化平台,虽然它可能是一种过度杀伤,取决于你的项目规模。

如果Visual Studio与批处理文件you may use it to compile your solution在同一台计算机上,虽然我怀疑你将来会遇到扩展问题。

答案 15 :(得分:0)

简单的答案是Subversion和Tortoise SVN。

我在视觉工作室中使用了Subversion,并且我已经使用现有项目实现了它。有一个名为Ankh的免费Visual Studio插件,我用了一些成功。但是,我遇到了一些问题,其中Ankh拒绝与.svn元数据中反映的文件的真实状态保持同步(它确实需要更新文件,因为当乌龟告诉我它是最新的时候需要更新)。在这些情况下,视觉工作室重新启动修复了问题,但这对我来说是痛苦和乏味的。

目前,我停止使用Ankh并在VS中正常工作我的项目,然后使用Tortoise和Windows资源管理器来检查它们。这完美无瑕。没有VS必须刷新或重新启动。

答案 16 :(得分:0)

+1关于Joe和Steve提供的答案。我还要提到设置忽略列表或SVN道具很重要,这样就不会检入用户文件,resharper设置。

还要确保包含构建所需的所有内容,例如构建脚本,第三方程序集,外部工具(如nunit,nant等)

当您参与其中时,我强烈建议您查看CC.net,并安装持续集成服务器以自动构建。

拥有源代码控制是一回事,正确使用它是另一回事。记得经常提前入住。

答案 17 :(得分:0)

我对Perforce比熟悉subversion更熟悉,但是将项目置于版本控制之下并不困难。

安装并运行版本控制软件后,清除所有非源代码的代码目录(例如,运行'make clean')。然后使用命令以递归方式将新文件添加到存储库。通过提交跟随它,你就完成了。我建议您到另一台机器上并至少建一次,以确保您拥有构建所需的一切。

至于部署到服务器上,这不是版本控制问题。您通常会将其放入构建系统(即'make testinstall','make install')或只编写shell脚本。

答案 18 :(得分:0)

很容易开始使用Subversion。下载TortoiseSVN,它将SVN集成到Windows资源管理器中。下载AnkhSVN for VS集成。将svnserve设置为Windows服务(它位于文档中)。

然后你要做的就是从svn中查看一个空目录并将所有代码文件复制到其中。然后用Tortoise添加它们,并提交。在Visual Studio中更改文件时,Ankh会向您显示您已更改的文件,并且可以在那里提交。

我们使用NAnt脚本完成所有部署,尽管您可能会发现批处理脚本和xcopy足够。

答案 19 :(得分:0)

对于您需要的内容可能过度,但在一台计算机上创建SVN存储库,然后在另一台计算机上创建一个连续的集成服务器。 TeamCity是我推荐的。 (如果硬件非常宝贵,您也可以使用虚拟PC)

这将允许您在构建完成并经过测试后添加自定义构建步骤以部署到生产服务器上。

TeamCity了解更多信息。 Thi还为Visual Studio提供了一个插件

答案 20 :(得分:-1)

我在桌面上使用mercurial,我喜欢它。创建存储库非常简单......

hg init /path/to/repository

添加文件......

hg add /folder/pattern  

OR

hg add FILE

然后你提交......

hg commit

你已经开始运转了。

另一件好事是,当我想要同步到我的笔记本电脑时,它只是......

hg pull //desktop_name/path/to/repo/  
hg update

我喜欢颠覆的东西是Visual Studio的插件,当状态图标一直在面对我时,我会更多地关注我的更新。如果您打算大量使用这个项目,那么插件肯定可以弥补设置svn存储库的麻烦。

答案 21 :(得分:-1)

这个问题明确地集中在现有的项目上。我还没有在这个帖子中找到一个合适的答案,并且在我有解决方案之前一直玩。结账时会出现麻烦,如许多答案中所述,最终你会得到第二个版本化文件夹,你现有的项目仍然没有版本,你不愿意复制/粘贴和/或重命名你的文件夹。

此问题的解决方案如下:

假设您在PC1中有一堆项目,所有项目都被收集为名为“Projects”的文件夹下的子文件夹,并且您希望在一个存储库中对所有项目进行版本控制。然后你想在具有相同文件夹结构的PC2上检查它。然后执行以下操作:

  1. 在网络驱动器上为您的存储库创建一个文件夹,并确保它名为“Projects”,即与开发项目的父文件夹相同的名称。例如,在网络驱动器上创建一个类似X:\ Repository \ Projects的文件夹。
  2. 右键单击此文件夹,然后选择TurtoiseSVN - >在此创建存储库
  3. 右键单击PC1(您现有项目)上的开发“Projects”文件夹,然后按TurtoiseSVN - >进口。选择名称为“Projects”的正确存储库(如果您已在网络驱动器上安装了其他存储库)。现在您的项目可供其他PC使用。
  4. 在PC2上创建一个父文件夹,您想要“Projects”文件夹。
  5. 右键单击PC2上的父文件夹,然后选择SVN Checkout。这些项目现在可在PC2上使用。
  6. 从现在开始,您使用“commit”存储存储库中的更改并“更新”以从存储库中获取最新版本。