Accurev外部使用,Git内部使用。

5

我正在使用Accurev作为版本控制系统进行项目开发。由于我对它并不熟悉,所以我想知道是否可以在“内部”使用git - 意思是我会在本地使用git,然后使用Accurev进行“正式”的提交。

这种方法可行吗?

如果可以的话,我自然希望将git从Accurev版本控制中排除。像这样有一个.acignore文件就足够了吗:

myproject/.git
myproject/.git/*
myproject/.gitignore

谢谢!


1
不知道你的组织是否可以选择,但AccuRev具有Git接口:http://www.accurev.com/products/gitcentric。 - Number8
不确定是否有用,但您可以考虑使用ac2git来持续跟踪您正在使用的流的Accurev仓库并将其转换为Git。这将允许您在Git中工作,然后在感觉准备好后简单地应用Accurev中的更改。对于Git到Accurev部分,您可以尝试使用类似legit-the-git的东西,但我自己没有尝试过,所以不知道它是否按预期工作。 - nonsensickle
5个回答

5

选项:

1)您可能希望了解AccuRev的GitCentric界面。它将允许您在Git中工作,并在AccuRev中显示您的内容,反之亦然。这并没有直接回答您的问题,但为您提供了一种使用熟悉工具的方式。

2)如果您不熟悉AccuRev,则他们会赞助每月的最终用户培训课程,而且是免费的。您可以注册在线教师主导培训。您最常需要的AccuRev命令是:keep、promote、update和merge。同样不是一个直接的答案,但学习是终身目标或挑战,这取决于您的观点。

3)使用.acignore文件将Git文件排除在AccuRev之外会起作用。.acignore文件旨在允许您保留未由AccuRev管理的文件(注为“(external)”),以免被处理。

您说:“我想知道是否使用git‘内部’是一个好主意——我的意思是我将在本地使用git,然后使用Accurev进行‘正式’提交。” 这是作为开发人员的乐趣和自由...如果您选择,当然可以这样做。您需要小心,因为Git不是官方记录的源,而是AccuRev扮演着这个角色。如果您不通过update命令保持AccuRev工作区最新,则可能会发现自己不得不进行许多合并。

如果您使用GitCentric,则AccuRev将是您站点的官方记录源,但您将能够在所有工作中使用Git。

请回复您的前进路径,因为我相信有许多好奇的开发人员可能想知道。

大卫


很遗憾,似乎您需要一个Linux AccuRev服务器才能使用GitCentric。不知道OP在Linux方面的情况如何。 - Number8

4
您应该能够同时使用git和AccuRev。不过,您可能需要调整您的.acignore文件。
来自AccuRev帮助文件:

示例

一个简单的通配符模式,例如“*.doc”,指定为全局匹配以下任何名称:

docs/chap01.doc
docs/manuals/chap01.doc
docs/widgetproj/src/manuals/usergd/chap01.doc

在docs/.acignore中指定的模式manuals/*.doc匹配以下任何名称:

docs/manuals/chap01.doc
docs/manuals/chap02.doc

...但不匹配以下名称:

docs/manuals/usergd/src/chap01.doc
docs/widgetproj/src/manuals/usergd/chap01.doc

但是,使用**来指定递归,如manuals/***/*.doc或manuals/**/chap.doc将匹配docs/manuals目录下任何目录中的*.doc或chap.doc的所有出现。有关使用**的更多信息,请参见第12页上的忽略模式中的通配符。


好的,我会试着玩一下。谢谢! - Tadej
1
你还需要将“.accurev”添加到你的“.gitignore”文件中。可能想要使用“accurev递归通配符”来匹配“.git/**/*”。 - Kent
我已经在几个项目中成功地使用了Git和AccuRev,它们都在同一个本地目录下。需要对.acignore和.gitignore文件进行一些调整,但是这是可行的。 - Number8

2
AccuRev和Git也可以使用GitCentric产品进行集成。如果您已经拥有AccuRev许可证,那么GitCentric只需要额外支付少量的许可费用。您可以在以下网址了解更多信息:http://www.accurev.com/products/gitcentric

2
您可以使用两者,但最好不要这样做。它们使用非常不同的底层模型 - (灵活与静态分支(Git vs Clearcase / Accurev))和(Accurev的一句话解释是什么?)。
我尝试过这个方法(我已经使用过几乎所有主要的SCM。Accurev和Clearcase是最糟糕的,Git和SVN是最好的),在大型项目中,处理双重提交/合并/重叠很快变得更加麻烦,而不是只使用Accurev。这是因为Accurev对子流/工作区进行“静默”更新。这意味着对于经常更新的Accurev流或大型团队,您经常需要处理每次提交的Git差异。虽然这听起来可能是一件好事,但每天至少要处理几个文件的差异,其中一些需要合并,这并不有趣(也不生产效率)。
“所以,好吧,你在想什么呢?这个插件怎么样?坦白地说,它的实现非常糟糕,在已经有些笨重的Accurev UI之上,它只是另一个阻碍良好工作实践和简化SCM过程的障碍。”
“对于最初提出问题的人来说,这显然为时已晚,但对于其他任何偶然发现这个问题的人来说,我的建议是(我知道Accurev所谓的最佳功能——自动更新子级别的父级别实际上是它最严重和最根本的缺陷),要忍受使用Accurev带来的痛苦,直到你可以转移到更明智的东西,比如Git。”

我同意你的观点,但这是可以做到的。如果你使用ac2git脚本跟踪流,你可以在git中进行变基并解决流中的合并,希望有足够长的时间窗口以一次性推广整个更改集。 - nonsensickle

1
我个人没有使用过,但legit-the-git是一个Ruby项目,旨在将您的本地git与Accurev系统同步。

这很有趣,我得试一下! - nonsensickle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接