标签: cvs

将遗留代码库从cvs转移到分布式存储库(例如git或mercurial).初始存储库设计所需的建议

介绍和背景

我们正在改变源代码控制系统,我们目前正在评估git和mercurial.总代码库大约有600万行代码,因此不是很大,也不是很小.

首先让我简单介绍一下当前存储库设计的外观.

我们有一个完整代码库的基本文件夹,在该级别下面有几个不同的上下文中使用的各种模块.例如,"dllproject1"和"dllproject2"可以看作完全独立的项目.

我们正在开发的软件是我们称之为配置器的软件,可以根据不同的客户需求进行无休止的定制.总共我们可能有50个不同的版本.但是,他们有一个共同点.它们共享一些必需的模块(mandatory_module1 ..).这些文件夹基本上包含内核/核心代码和公共语言资源等.然后,所有自定义都可以是其他模块(module1 ..)之间的任何组合.

由于我们目前正在使用cvs,因此我们在CVSROOT/modules文件中添加了别名.他们可能看起来像:

core –a mandatory_module1 mandatory_module2 mandatory_module3
project_x –a module1 module3 module5 core
Run Code Online (Sandbox Code Playgroud)

因此,如果有人决定使用project_x,他/她可以快速检查所需的模块:

base>cvs co project_x
Run Code Online (Sandbox Code Playgroud)

问题

直观地说,将基本文件夹作为单个存储库感觉是错误的.作为程序员,您应该能够查看当前正在使用的项目所需的确切代码子集.你对此有何看法?

另一方面,将每个模块放在不同的存储库中感觉更为正确.但这使得程序员更难以检查出他们需要的模块.您应该能够通过一个命令执行此操作.所以我的问题是:在git/mercurial中是否有类似的方法来定义别名?

任何其他问题,建议和指示都非常欢迎!

PS.我已经搜索了类似的问题,但并不觉得他们中的任何一个都100%适用于我的情况.

git cvs mercurial dvcs

12
推荐指数
2
解决办法
4246
查看次数

如何知道git存储库是否有未与服务器(源)同步的更改?

我在Git中设置了大量项目,这些项目以前是在CVS中管理的.如果我对尚未发送到中央服务器的存储库进行了更改,那么Tortoise CVS以及Eclipse都很容易看到(通过图标叠加).

有没有一种方便的方法来实现这一点与Git?我真的不需要图标叠加 - 我只需要知道在将我的分支与原始分支进行比较时是否有突出的变化.我不介意使用某种脚本来查询所有的Git回购.

git cvs scripting

12
推荐指数
2
解决办法
4750
查看次数

使用Glob语法忽略Mercurial中的文件

我正在使用Mercurial,我有以下结构:

files
   test
       demo.jpg
       video.flv
       video.doc

   sport
       demo2.jpg
       picture.jpg
       text.txt
demo3.jpg
demofile3.doc
Run Code Online (Sandbox Code Playgroud)

我想创建一个glob过滤器,它只忽略所有目录中作为"files"目录子项的所有"jpg"文件

我尝试使用files/*.jpg,但它不起作用.

任何意见,将不胜感激.

regex cvs mercurial glob hgignore

11
推荐指数
2
解决办法
7286
查看次数

Android和版本控制系统,提交gen文件夹或放在忽略列表?

已经有一些关于gen文件夹与版本控制系统(SVN,CVS,Git等)一起引起的问题的讨论.但对我来说还不清楚的是,它应该被提交还是被列入忽略名单?推荐的方式是什么?

谢谢!

svn git cvs mercurial android

11
推荐指数
1
解决办法
1984
查看次数

如何在eclipse diff中忽略CVS关键字标签

我喜欢eclipse diff/merge透视图,当处理大型项目和需要偶尔合并的多个分支时,缺少一个特性:

有没有办法设置eclipse diff来忽略CVS标签,比如$ Author:$,$ Revision:$等等?

由于这些标签在所有分支中都是不同的,因此"与另一个分支比较"总是会导致几百个文件显示不同的标签,但代码中没有明显的差异.(当然标签只有在修复了分支和头部的几百个文件中的错误之后才会有所不同.但是在我工作的地方发生了很多错误.请不要发表评论.)

eclipse cvs

10
推荐指数
1
解决办法
2428
查看次数

最常见的CVS来自SVN用户的观点

我本身就是一个颠覆用户,总体上非常满意.但是,有时我需要处理存储在我无法控制的CVS存储库(即一些开源项目)上的代码.我听过很多关于为什么CVS真的有缺陷的恐怖故事,但没有什么非常具体的,我想避免自己陷入这样的错误:-)

我想知道你是否可以列举在访问和使用生活在CVS上的代码库时可能出现的所有陷阱和潜在问题,以及如何处理它们.

svn cvs version-control

10
推荐指数
1
解决办法
569
查看次数

如何在CVS中重命名分支?

如果您在CVS中错误地命名了分支,或者最初选择的名称变得不合适,您如何将其更改为其他名称?

一个相关的问题是如何在没有管理员权限的情况下重命名CVS中的分支?.

cvs

10
推荐指数
1
解决办法
1万
查看次数

源控制 - 如果,为什么,如何开始?

可能重复:
使用源代码管理

所以,虽然即使在stackoverflow上也只是版本控制上的几十件事,我找不到一些好的方法来回答我的所有问题.如果您有任何发言或发布链接,请在此处进行操作.

1.,我需要从版本控制开始吗?

虽然大多数人都同意,即使是单个开发人员/程序员也应该从版本控制开始,没有人(或者至少是可理解的形式)告诉我们

那,怎么样?

在我的本性是,我需要知道什么意思CVS,SVN,龟,Git的,GitHub上有什么区别,但我很难找到一些死的简单脚踏启动到版本控制的世界.

作为开发人员/程序员,我工作或学习过几乎所有的编程/标记语言,这是主要的(从帕斯卡到Java,从HTML到PHP :)),并用几十个编辑,IDE和节目评析.当有人提到你甚至可以使用源代码控制来写东西 - 为学生做家庭作业,年度报告,书籍......你必须包括更多的编辑......

我现在已经不知道如何从版本控制开始,如何将它合并到我的工作流程中,如果我需要服务器或什么.

感谢您帮助我找到什么是什么以及如何处理:)

编辑: 从你的所有答案(谢谢),我感觉它真的只有像"有历史的同步文件夹".(以最明显的方式:))如果是的话,你能回答两个问题吗?(编号4.和5.,所以它不会混淆答案:))

4.,如果我决定彻底改变我的程序结构怎么办(例如,在flex中,我决定使用两个as3类来代替MXML组件) - 这不会让人产生混淆吗?

5.,从其他问题来看,我如何承诺?(发现这个问题已经发布并且可能已经回答了,但是又丢了它)

编辑2: 再次,更多答案(谢谢)

6,我的问题4更像是如果我不小心(或不)续签了一些被删除的文件(这可能是可能的),它会破坏我的计划,因为例如它取决于其他已删除的文件,这是不是不删除,将我能搞定吗?:d

7.,我看到了一些我会看的方式.谢谢你的答案......但是,现在我很困惑,我应该给谁"好的答案",因为你们都非常有帮助:)

接下来,我会(对于任何寻找我正在寻找和绊倒这个问题的人):

阅读此stackoverflows:

看这个视频:

http://excess.org/article/2008/07/ogre-git-tutorial/

在理解手册的基础知识时,我将其缩小到颠覆(+ TortoiseSVN)和git(hub),这是最常用和最受欢迎的.我现在只有github的问题是私有存储库是付费的,所以我会查找不同的git解决方案或者更多地查看Subversion.

非常感谢大家,我提出了最有帮助的答案,也感谢您的评论.亚当

编辑:尝试Mercurial,但发现我的工作流程不行......现在尝试颠覆,所以我标记了最老的颠覆答案:)

svn git cvs version-control

10
推荐指数
3
解决办法
1251
查看次数

如何以编程方式获取CVS结帐时的最新提交日期

对于我正在使用CVS实现二分法的脚本,我想弄清楚当前结账的"时间戳"是什么.换句话说,如果我在分支/标签上,我想知道最后一个时间戳被提交到该分支/标签.如果我在头上,我想知道头上的最后一个时间戳.

我知道这不是100%保证,因为cvs checkout可以在不同的时间戳/修订/ ...有不同的文件,但是大多数情况下正确的解决方案对我来说都很好.

天真的,我想到了

cvs log -N | grep ^date: | sort | tail -n 1 | cut -d\; -f1
Run Code Online (Sandbox Code Playgroud)

将要做到这一点,但事实证明它贯穿整个提交历史,对于所有分支/标签.

cvs

9
推荐指数
1
解决办法
6495
查看次数

将包含Eclipse项目的CVS存储库转换为git的最强大的方法?

我有一个情况,我有一个老年人的CVS存储库,我们希望一次性转换为git,同时保持完整的历史记录等.

存储库根目录下的所有文件夹都包含Eclipse项目(普通或动态Web项目),包括.classpath和.project.我们使用Team ProjectSet来检查给定任务所需的项目(项目集位于包含main的项目中,其余是库项目).

签出Team ProjectSet后,工作区将完全填充.

多年来这种方法运作良好(除了3.5附带的项目设置部分),如果可能的话,我们希望以类似的方式使用git,但我们不确定如何.

我玩过一段时间git cvs import但失败了 - 可能是因为我们没有使用模块.

您如何建议我们这样做,以及我们应该如何使用git来允许我们当前使用共享库项目?我们将HAVE介绍Maven和创造我们的图书馆项目的Maven模块?或者只是蚂蚁常春藤?


编辑:我现在设法通过合适的cvs2svn调用将我们的CVS存储库转换为Subversion,并发现Eclipse很好地识别了生成的Subversion存储库.不幸的是在克隆http: //github.com/iteman/svn2git`并尝试运行bin/svn2git之后我得到了

tra@Sandbox:~/cvsgit/svn2git/svn2git$ bin/svn2git
bin/svn2git:35:in `initialize': wrong number of arguments (2 for 1) (ArgumentError)
        from bin/svn2git:35:in `new'
        from bin/svn2git:35
Run Code Online (Sandbox Code Playgroud)

这是与Ubuntu 10.04.1 LTS服务器,我尝试了各种sudo与Ruby及其宝石的东西,但没有完全理解我做了什么,因为我不是一个Ruby程序员,所以我可能搞砸了一些东西.我很感激建议 - 如果最简单的是安装另一个Linux变种来进行转换,那很好.


编辑:

https://help.ubuntu.com/community/Git http://css.dzone.com/articles/subversion-git-morning


编辑:我第一次尝试使用默认的svn2git成功完成(一段时间后),我得到一个很好的存储库,其中git branch -a大致报告

tra@Sandbox:~/gitroot/svnroot$ git branch -a
* master
  remotes/XX64_DEPLOYED_CODE
  remotes/Beta1
  remotes/Beta2
  remotes/SV46
  ... lots more
Run Code Online (Sandbox Code Playgroud)

我们有兴趣能够检查SV46分支并使用它(我们基本上不关心标签,只关心实际的分支).我已经设置了gitosis并将此存储库推送到gitosis,并将其克隆到另一台计算机,以了解如何使用Eclipse进行"使用SV46"位. THAT库不知道所有的分支:

tra@TRA ~/git/git00 (master)
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

我是否需要按照svn2git的原始结果来获取gitosis存储库中的信息?我需要用参数克隆吗?我应该使用建议的版本而不是Ubuntu附带的版本重做svn2git步骤吗?

编辑:事实证明,使用"git …

java eclipse git cvs

9
推荐指数
1
解决办法
2293
查看次数

标签 统计

cvs ×10

git ×5

mercurial ×3

svn ×3

eclipse ×2

version-control ×2

android ×1

dvcs ×1

glob ×1

hgignore ×1

java ×1

regex ×1

scripting ×1