我有几个源控制问题。我和另一位网络开发人员加入了一家公司,接管旧的和未来的项目的软件开发。该公司没有源代码控制,因为旧项目是由具有自己的版本控制系统的外部承包商开发的。我想尽快进行一次设置,但我对2个流行的选择有一些疑问,我也无法找到答案,所以不只是另一个GitHub与Subversion话题。
要存储的项目的一些背景知识。有几个较旧的项目,主要是驱动程序/固件。我自己的新项目将更多基于.Net / Java,而Web开发人员则希望存储网站内容。
根据我的阅读和尝试,我更喜欢Github,但Web开发人员对使用Subversion更加坚定。另一个考虑因素可能是我在Windows机器上,而Web开发人员在Mac上,因此可用的客户端会有所不同。我希望我们都能使用相同的源代码控制,而不是采用不同的方式。我使用的第一个源代码控制是团队基础服务器,我们从根目录为每个项目提供了一个存储库和子目录。
Q1。对GitHub的担忧,基本包将允许10个存储库。考虑到已经有5个网站,12个旧软件项目,3个新项目甚至还有更多项目,我觉得我们可以托管的项目数量有限,即使编辑很少而且项目越来越远。与Git一起,您似乎克隆/签出了整个存储库。假设我可以不将几个项目存储在一个存储库中,只是在不同的子目录下,我是否正确。
SoftwareRepo / PROJECT1 /代码
SoftwareRepo / Project2的/代码
SoftwareRepo /项目3 /代码
SoftwareRepo / Project4 /代码
或者代替子目录尝试使用分支,因此您有一个空的存储库,您可以从中分支,其中每个分支包含每个不同项目的内容。我在这里看到的缺点是当您切换分支(或我的情况下的项目)时,旧项目的文件将隐藏在文件资源管理器中,直到您切换回上一个分支(上一个项目)。
我认为我们需要的是更多的存储库,并且它们占用的磁盘空间上限因为我们可能有几十个较小的项目,这些项目是一次性的,并且在活动开发期间实际上只需要源代码控制,然后是一些较大的项目可以利用GitHubs强大的功能,如分支。
对于客户端,我发现SmartGit在管理我创建的测试存储库时非常有用,而不是我最初尝试使用的命令通道。
Q2。如果我们使用SubVersion,我们可以自己托管它。我有一个带有6GB内存的i7,因此可以运行一个虚拟机,但网络开发人员不高兴我可能在办公室外面,因此颠覆服务器会关闭,他们也不满意我的机器像服务器一样全天候运行。我们确实有一个业务服务器,但外包管理员在运行流程时非常敏感,所以我们也不能对它进行颠覆。服务器硬盘每天至少备份。是否可以将存储库文件存储在我们的业务服务器上,只使用客户端访问subversion文件,或者是客户端访问存储库文件所需的subversion服务器进程。 Web开发人员正在考虑在Amazon E2C云中运行SVN服务器,但我没有使用它的经验,因此无法发表评论。 我对subversion的关注是我以前使用它,并且有一些非常奇怪的错误消息,TortiseSVN让我删除了我的签出文件夹,并且由于冲突(似乎不存在)而从存储库中重新加载源代码,然后我才能检查任何代码。
如果您有许多不同类型的小项目,您会选择哪个源控制客户端以及您采用哪种方法(在线主机,托管我们自己)。 我试图找出可用选项中最好的解决方案。
修改
令人失望的是,我们最终选择了SVN。不是我个人的选择,但我们在尝试在Windows机器上设置Git并将其作为服务器运行时遇到了难以置信的困难。它需要大量额外的安装,SHH的设置以及通过命令行进行管理。如本指南所示 - http://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/ SVN另一方面我们使用VisualSVN Server,将其指向存储存储库的网络驱动器,我们正在路上。单个安装程序和易于使用的管理控制台。 如果Git可以作为带有管理GUI的单个安装程序完成,我们会使用它,因为我认为它已经有了更加灵活和可靠,因为我们已经有了SVN错误消息,(损坏的文件/文件存在snot /运行清理等)
答案 0 :(得分:4)
我认为你已经错过了一点关于git的观点。从手册页:“Git本身支持ssh,git,http,https,ftp,ftps和rsync协议。”这不仅意味着您可以根据需要自行托管i7,但如果您的“业务服务器”已经设置了其中一个,您可以使用它而无需系统管理员安装任何其他内容。
此外,git的分布式特性意味着您不需要只有一个中央存储库,也不需要让所有存储库始终在线。只要您经常在线分享彼此之间的更改,您就可以在任何地方托管自己的git存储库,根据需要检查自己的更改,并根据需要从另一个中提取更改。这种灵活性听起来非常适合您的情况。
答案 1 :(得分:1)
如果我是你,我当然会为每个不相关的项目提供单独的git repo。当你通常不需要对两者进行协调的更改时,我称两个项目“无关”,你不需要同时提交两个项目。也许你没有那么多不相关的项目,只需要3-4个回购。我在一个大型项目中工作,发布了许多独立产品,我们只有3个git回购。
是的,subversion服务器是一个需要运行的进程,以允许svn客户端与之通信。请注意svn hosting is also widely available。
您也可以make the SVN repo follow your git repo,这样每个人都可以获得他/她的首选界面。有一天探索这个。
如果你使用git,你也可以自己托管它:[1],[2]等。这可能不像github那样性感,但你真的需要所有这些功能吗?但是,如果你这样做,20个回收费用为22美元/月,10个回购费用为10美元/月。或者。亚马逊EC2可能会以类似方式向您收费。
但是,如果你不是非常经济紧张,我想你会购买商业SVN和git托管,并从你的肩膀上卸载管理,备份等。使用git,您可以在每台计算机上拥有完整的存储库副本,它可以防止出现多种故障。
答案 2 :(得分:1)
GitHub不是版本控制系统,它是git的托管服务。 Git可以很容易地在本地托管。 (例如,请参阅使用ssh托管多个git存储库的gitolite。)
我强烈建议您同时使用相同的程序,无论是Subversion还是Git。就个人而言,我会推荐Git,每个项目都有单独的存储库,并使用本地托管的服务器,如gitolite,虽然它不像GitHub那样时髦。我非常倾向于不依赖第三方来提供对我的源代码这样的关键资源的访问。
答案 3 :(得分:1)
为了满足您的svn友好的Web开发人员,您可以让svn成为您的中央存储库,您可以在本地计算机上使用git并使用git-svn与svn服务器通信。
与Git一起,您似乎克隆/签出了整个存储库。
不必是修订版1的完整克隆。您可以从特定版本克隆。
Q2。如果我们使用SubVersion,我们可以自己托管它。我有一个带有6GB内存的i7,因此可以运行一个虚拟机,但网络开发人员不高兴我可能在办公室外面,因此颠覆服务器会关闭,他们也不满意我的机器像服务器一样全天候运行。
如果可能,请让您的客户获得NAS并在那里设置您的svn回购。即使您不在办公室,也可以使用您的个人(git)克隆。 Web开发人员也可以愉快地使用svn。