2008-09-22 70 views
17

我正在开发一个已经发展到相当规模的项目,并且我是唯一的开发人员。我们目前不使用任何版本控制,但我肯定需要开始。将版本控制添加到现有项目

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

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

这一切都是使用Visual Studio(如果该事项)

回答

16

为了扩大一点在以前的答案...

1)创建一个新的SVN仓库
2)提交所有你对到目前为止的工作吧
3)的代码检查所有再次输出代码,在您的开发机器上创建工作副本
4)工作!

这绝对不是障碍,真的。

+11

这难道不是真的吗? 把一个现有的项目放在SVN中对我来说是一件很恐怖的事情(至少在使用Tortoise的时候)。 要创建回购,您需要一个空文件夹[原文!]。 你可以先导入东西(然后结账),但是你会将你永远不会放在那里的所有垃圾(即R#缓存等)导入到你的SVN中。 事实证明,你必须重新命名你的文件夹,并做文件复制/移动舞蹈做简单的事情。 它真的令我惊讶,它有多少麻烦。 我想知道有多少新人有这种不好的第一印象。 – 2009-09-15 10:30:30

+0

虽然我更喜欢TFS,但它其实很简单。 1)在VisualSVN服务器中创建一个新的svn仓库2)在你的仓库中右键点击你想要的文件夹,然后转到TortoiseSVN - >导入并放置在中继线中,例如https:// localhost:8443/svn/myproject/trunk – 2013-02-05 04:50:53

3

导入现有的基地变成一个SVN仓库在ASP.NET开发,签退了出来,并开始工作了。

+0

只要确保在删除原件(如果要删除原件)之前检查签出的文件是否齐全。作为一个最大的WTF问题的海报将作证。 :D – KTC 2008-09-22 20:36:34

+1

不好的建议,这样你最终会导入你的仓库中不应该有的所有垃圾,比如R#缓存,obj文件夹等。 – 2009-09-15 10:44:47

3

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

+0

与AnkhSVN相比,价值49美元? – 2008-09-22 20:38:30

+0

这个网站上的人已经表达了Ankh的问题。 Jeff和他的团队使用VisualSVN,我也是如此。我喜欢它。 – mmcdole 2008-09-30 20:59:51

1

Subversion服务器安装... Subverison客户端库安装装配

集成安装安赫与VS 的文件管理器集成

安装龟在文件管理器中,右键单击顶级水平方向解决方案...导入...

0

对于你所需要的,但在一台机器上创建一个SVN仓库,然后在另一台设置一个连续的集成服务器上,这可能是矫枉过正的。我会推荐TeamCity。 (如果硬件很贵,您也可以使用虚拟PC)

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

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

0

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

然后你要做的就是从svn检出一个空目录,并将所有的代码文件复制到它。然后添加他们与乌龟,并承诺。当您在Visual Studio中更改文件时,Ankh会向您显示您已更改的文件,并且您可以在此处提交它们。

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

0

我比Perversion更熟悉Perversion而不是颠覆,但将项目放在版本控制下并不难。

一旦你安装并运行了版本控制软件,就清除你的代码目录中的所有非源代码(例如,运行'make clean')。然后使用该命令以递归方式将新文件添加到存储库。按照提交,你就完成了。我建议至少检查一次不同的机器和建筑物,以确保您拥有所需的一切。

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

2

抛开技术问题,只需获得SVN并开始使用它。您会看到直接的好处(查看代码历史记录,区分调试以了解哪些更改引入了上周不存在的错误),并且您永远不会想回头。

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

0

对乔和史蒂夫提供的答案+1。我还会提到,设置忽略列表或SVN道具是非常重要的,以便您不检查用户文件,resharper设置。

另外,还要确保你有可能需要为创造一切条件,如构建脚本,第三方组件,外部工具,如NUnit的,南特等

当你在的话,我会强烈建议您查看CC.net,并获得持续集成服务器以使您的构建自动化。

有源控制是一回事,正确使用它是另一回事。请记得经常和早点入住。

0

简单的答案是Subversion和Tortoise SVN。

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

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

0

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

你可以在这里找到更多的信息: SVN book - 刚开始阅读它 - 你不需要阅读所有的启动并获得svn运行。 MSBuild - 微软的构建自动化平台,虽然它可能是一个矫枉过正的,取决于你的项目的大小。

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

0

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

7

我没有看到任何人解决你的问题/后的这一部分:

是否有一个工具,将 上传自动化测试,那么 部署到Live服务器?

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

据我所知,没有自动化的工具。您可以创建一个批处理文件,会发出这样的SVN导出命令:

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

就包括这个作为部署过程的一部分。确保从这个导出的目录中部署您的代码,而不是您的工作副本。那你应该没事的。

2

不需要SVN服务器。
使用龟水银http://sourceforge.net/project/showfiles.php?group_id=199155

设置本地回购
1)下载并安装
2)打开资源管理器窗口中的基本目录的你的项目
3)右击 - > TortoiseHG - >创建库这里 - >好的
4)右键 - > HG提交...
5)键入您提交的评论中,选择哪些文件进行跟踪,并点击提交

安装远程回购了文件共享可用的(其他运输方式)
1)打开资源管理器窗口来远程文件夹
2A)右-Click - > TortoiseHG - >克隆一个仓库
2B)或者,只是犯本地
1)打开资源管理器窗口来远程文件夹后在

更新远程回购您的本地回购复制 2)右击 - > TortoiseHG - >同步
3)选择“更新到新尖”上拉菜单
4)输入路径到本地回购为“远程路径:”输入框中 5)点击拉

0

要添加到以前的答案,我也推荐了明显的(但他们应该作出明确的)建议:

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

现在,请注意:

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

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

1

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

他们强调的一点是,他们不需要中央存储库,这意味着您的程序员可以签出您的项目,去他们的家,工作(不必与服务器建立连接),并在第二天回到办公室并同步他们的存储库。

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

0

我最近开始喜欢集市的简单解决已经对应用砍死后开始的版本控制问题一段时间。

有了集市真的是只有几个简单的命令: 1)bzr init命令 2)BZR添加 3)BZR提交

注意这并设置[您感兴趣的文件]任何中央储存库。但你也可以这样做。

关于使用它作为部署工具,我很确定不久前我读了一些关于它的内容。无论如何,这些文件真的很好。

-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库的麻烦。

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 
4

+1马特豪威尔的回答。

我不知道我通过在回购库中创建目录添加了一个新项目,将新项目导入到项目中,然后再次检出。这就是为什么马特的回答是最好的:

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

  2. 我创建SVN回购目录,并导入FRED进去。

  3. 但FRED目录仍然不受源代码管理 - 它缺乏。svn文件,所以我需要检查出来,进入一个新的目录,我们称之为FRED-NEW,重新创建所有文件

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

马特说,检查出早了一步,而在SVN回购的文件夹仍然是空的:

  1. 在SVN创建一个目录,并检查了入FRED-NEW。

  2. 复制FRED-NEW/.svn文件到FRED/

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

犹未:

  1. 创建SVN目录,在此之前将文件添加到它,从直接检查空目录INTO FRED。

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

此外,如果你正在使用CLI,并没有想到这一点,直到提交新的文件后,请参见下面alroc的回答是:--force检查伸到FRED时。

-1

该问题清楚地集中在现有的项目。我在这个线程中还没有找到合适的答案,并在我找到解决方案之前一直在玩。如许多答案中所述,结账时会出现麻烦,并且最终得到第二个版本文件夹,您现有的项目仍处于未版本控制状态,并且您不愿意复制/粘贴和/或重命名文件夹。

这个问题的解决方案如下:

假设你有一大堆的PC1项目,全部收集为一个名为“项目”文件夹下的子文件夹,你想版本他们都在一个存储库。然后你想在PC2上用相同的文件夹结构检查它。然后你做到以下几点:

  1. 创建的网络驱动器上存储库的文件夹,并确保它被命名为“项目”,即相同的名称作为开发的父文件夹项目。例如,在网络驱动器上创建一个像X:\ Repository \ Projects这样的文件夹。
  2. 用鼠标右键单击该文件夹并选择TurtoiseSVN - >在此创建存储库
  3. 右键单击PC1(您现有的项目)上的开发“项目”文件夹,然后按TurtoiseSVN - >导入。选择名称为“Projects”的正确存储库(以防在网络驱动器上已有其他存储库)。现在您的项目可供其他PC使用。
  4. 在PC2上想要“Projects”文件夹的父文件夹。
  5. 在PC2上右键点击此父文件夹并选择SVN Checkout。这些项目现在可在PC2上使用。
  6. 从现在开始,您使用“提交”来存储存储库中的更改并“更新”以从存储库获取最新版本。