ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Jazz 源代码版本控制常见问题解答

Jazz 源代码版本控制常见问题解答

原创 Linux操作系统 作者:habug 时间:2009-03-31 15:55:50 0 删除 编辑

常见问题

作出变更

放弃的变更

搜索变更

故障排除

什么是一项资源?

资源就是我们通常用于描述某个文件或者文件夹的通用团队。

让流程和存储库工作区保持所有的文件是不是成本太高?

在关于 Jazz 源代码版本控制的一些文件中,看起来好像是每一个存储库工作区和流程,在存储库中都要有所有文件和文件夹的拷贝。这是过度简化了。在封面之下共享历史记录,当从某个流程中创建一个存储库工作区时,只有指向流程历史记录的指针才需要被参考。然后在存储库工作区会创建一个新的工作集,它们就是工作区所拥有的新历史记录。

我习惯了 CVS/SVN,所以我能理解检出和更新,但是怎样去载入、卸载、接受以及提交?

CVS 和 Subversion 都使用团队检出提交以及更新。在 CVS/SVN 中:
  • 检出在您的本地计算机中下载分支的内容,
  • 对分支卸载您的变更,并让其他人也有访问变更的权利,并且
  • 从分支中下载更新最新的版本到您的本地计算机上。

在 Jazz 中,一次载入相当于检出:它下载存储库工作区的内容到您的本地计算机上。当您想要从计算机中删除本地工作区时,您可以卸载它。卸载就等同于在 CVS 或者 Subversion 中删除掉 SCM 目录。

Jazz 中的一次检入,会导致本地工作区中的所有改变,都上传给您的存储库工作区。这些变更只会添加给您的存储库工作区,这样您所在团队的其他人就不会知道它。 CVS 和 Subversion 都不会有相似的操作。

一次提交操作,会对一个流程添加存储库工作区中的变更集。然后您所在团队的其他人都可以访问它。如果您已经习惯了 CVS/SVN,那么您可以将其当作一次提交操作。

一个接受操作非常类似于 CVS/SVN 更新。它从流程中对您的存储库工作区,插入新的变更集,并更新您的本地工作区。注意,如果您接受了一个没有载入的存储库工作区中的变更的话,那么变更将只会添加到存储库工作区中。下次您再载入存储库工作区的时候,变更将会变得可用。

查看 “Jazz 技术平台快速指南” 以获得更多关于术语的解释。

作出变更

我修改了一个文件,我要怎样才能将其提交给我的团队?

如果您已经修改了文件 JUnit/src/junit/framework/Assert.java ,并想让其他团队成员也能编辑此变更,那么您可以按照以下步骤来做到这一点:

  1. Assert.java 应该是 Pending Changes 视图下一个未解决的变更。
  2. 按以下方法打开 Pending Changes 视图(您可以按 Ctrl-3,“vpc”,并输入以显示它 )。
  3. 展开组件的“Unresolved”文件夹。该文件夹包含了将会列出的变更后的文件。展开它,您将会看到一个显示 Assert.java 的更改。

如果您想要立即将其提交给您的团队,那么遵循以下的步骤:

  1. 选择要输出的改变。右击并选择“Check-in and Deliver...”。
  2. 在向导中,输入您想要注释说明的变更集。
  3. 如果没有与变更相关联的工作项,那么您就点击 Finish,否则您就点击“Next”,并挑选一个已存在的工作项,或者创建一个新的工作项。

如果您想在提交给您的团队之前,积累一些变更,那么遵循以下步骤:

  1. 选择输出的变更。右击并选择“Check-in > New Change set”。
  2. 展开文件夹以查看新的工作集。展开工作集以查看您的变更。
  3. 为了对变更集添加一个注释说明;选择变更集,右击并选择“Edit Comment”。
  4. 为了让变更集与工作项关联起来;选择变更集,右击并选择“Associate Work Item...”
  5. 完成您的其他变更。为了对它们进行检入,选择变更,右击并选择“Check-in >”并选出您的新变更集。
  6. 当您的变更完成时,选择变更集,右击并选择“Deliver”

变更会添加致您设置变更会流向的流程。其他的开发员就能够在那里接受变更。

我怎样接受来自我团队的变更?

如何您与其他的人合作,您将在最后看到输入的变更集。它们都显示在 Pending Changes 视图下的“Incoming”节点之上。

  1. 打开 Pending Changes 视图。
  2. 在 Incoming 文件夹下检查输入的变更集。每一个变更集都包含了被修改文件以及工作项的列表。
  3. 右击 incoming 文件夹并选择“Accept”。如果您只想接受一个工作集的话,那么您可以右击该变更并选择“Accept”。

变更会添加倒您的存储库工作区中。如果您的工作区在本地载入了,那么变更会应用到您的本地文件中。

有时我会碰到一些我没有写的变更集,到底是怎么回事?

如果您接受了工作区中的某个变更集,而后该变更集从流程中放弃,那么该变更集将会显示成输出的。“Incoming”文件夹显示了流程拥有但是存储库工作区没有的变更集。“Outgoing”文件夹显示了您的存储库拥有而流程没有的变更集。

有人通过使用没有包含变更集的基线,替换流程中的构件时,来从流程中移除变更集

为了简单的放弃所有的输出的变更集;选择构件,右击并选择“Replace With > Latest from ”。该操作将会复制流程配置到您的存储库,并移除不想要的变更集。

如果您有一些您想要保持的变更集,那么您只需移除不想要的变更集。选择您没有书写的变更集,右击它们并选择“Discard...”。如果您不能放弃变更集,因为这将会引入一个空距,这就意味着您已经开始在从流程中移除的变更的顶部构建。您有一些选项。您可以通过恢复它,来有效的从流程中移除掉变更集。另一个选项是为您的工作创建一个补丁,通过替换为流程中最新的版本,来放弃所有的输出变更,然后去应用包含了您的工作的补丁。

Pending Changes 视图在关于存储库工作区和流程之间差异方面是繁琐的。为了避免对其他用户造成这个问题,当您想要从流程中移除一个变更集时,您就可以使用该恢复操作。

我怎样才能共享默认被忽略的文件?

Jazz 在默认条件下忽略了两种类型的文件:以.class结尾的资源,和项目根目录下bin目录下的所有部分。

如果您想要共享一个.class 文件,那么您不得不从全部忽略列表中移除*.class摸板,按以下步骤做到这一点:

  1. 在您项目的根目录下,编辑或创建文件.jazzignore。该文件是一个标准的 Java 属性文件。
  2. 对 .jazzignore 文件添加行
     core.global.ignore=

    。如果行 core.global.ignore 已经存在,那么从其中移除模板 *.class
  3. 保存 .jazzignore 文件。

这将会导致以 .class 结尾的文件,会由存储库工作区默认检查。

如果您想要共享您的 bin 目录中的内容,那么您将需要从 .jazzignore 文件中移除模板 bin

  1. 在项目根目录下选择目录 bin
  2. 右击并选择“Team > Remove from Ignore List”。

这将会共享 bin 中的内容。

我怎样才能将变更提交给一个被忽略的资源?

如果有一些资源,例如“junit_tests.launch”被忽略了,但是您又想让其显示在变更集中,那么您可以这样做:

  1. 不要忽略文件( 在 Navigator 视图中,选择资源,右击并选择“Team > Remove from Ignore List”)。
  2. 打开 Pending Changes 视图,并在 Unresolved 文件夹下找到"junit_tests.launch"。它应该与".jazzignore"文件的变更共存。
  3. 检入变更集为 “junit_tests.launch”,以及其他您想要共存的变更 。
  4. 提交变更集。
  5. 在 Unresolved 文件夹中选择“.jazzignore”文件。右击并选择“Undo”。通过取消“.jazzignore”文件变更,“junit_tests.launch”将会再一次被忽略。

如果您的“.jazzignore”文件在变更进行过程中偶然的被检入了,那么您可以这样做:

  1. 移动“.jazzignore”更改到一个变更集中。选择该变更,右击并选择“Move > New Change set”。
  2. 当您在提交您的变更时,不要提交这个变更。
  3. 一旦您的变更得到提交;选择变更集,右击并选择“Discard...”。

放弃变更

我想要停止处理一个变更集并去做一些其他事。我怎样才能从工作区中提取出变更集?

Jazz 允许您通过冻结它,来暂时从您的工作区中移除一个变更集。在未来的某个时间时,您可以恢复它并继续处理它。为了冻结某个变更集,您可以这样做:

  1. 打开 Pending Changes 视图,并选择您想要冻结的输出变更集。
  2. 右击您选择的变更集并选择“Suspend”。

变更集将会从您的“Outgoing”变更点处移除,并放入与构架相关联的 “Suspended”节点。

当您想要继续处理变更时,您可以恢复它。您可以将其恢复到您冻结它时的同一工作区中,或者与之不同的工作区中 。

  1. 打开 Pending Changes 视图,展开您的构件之下的“Suspended”文件夹,并选择您想要恢复的被冻结的变更集。
  2. 右击该变更集斌选择“Resume”。

变更集会返回致您的“Outgoing”变更集。

注意:冻结的变更集能够与工作区中的变更相冲突。当冲突发生时,会要求您在恢复后解决这个变更。

注意:如果您打开的变更集,将相同的资源当做恢复的工作集的话,您将会被告知发生重叠。只有 1 打开变更集可以包含资源的变更。恢复操作会允许您去选择恢复的变更集。如果您不想要这样做的话,那么您就可以冻结该重叠的变更集,并再次尝试恢复操作。

我想在我的工作区中永久性的摆脱某个变更集。那么我怎样才能摆脱一个未传递的变更集?

输出变更可以被放弃,这就可以从工作区中移除变更。如果变更集与一个工作项相关联的话,那么工作区可以从工作项中再次被接受,您可以搜索该变更集。

  1. 打开 Pending Changes 视图,并在 Outgoing 文件夹下选择变更集。
  2. 右击变更集并选择“Discard”。

我怎样才能从一个流程中去掉一个变更集?

为了从一个流程中删除一个变更集,您可以创建一个新的变更集以恢复它。为了恢复一个变更集,在变更集中作出的变更没有完成。然后恢复的变更会检入提交给流程的变更集。

  1. 在包含了不想要变更集的构件上打开 History 视图。
  2. 在 History 视图中找到您想要恢复的变更集。
  3. 右击变更集并选择“Reverse”。这将会创建一系列可以应用到您的本地工作区中的补丁,以恢复变更集作出的变更。
  4. 在 pending changes 视图中,展开 “Pending patches”文件夹,以查看所有的恢复后的变更。您可以通过双击它们,来检查它们的细节部分。
  5. 当您已经准备好对本地工作区应用改变时,选择“Reverse:”补丁(或者个人变更),右击并选择“Merge into Workspace”。这将会把变更合并到本地工作区中。
  6. 如果一个文件由于被恢复了而发生巨大的变化,那么您可能会遇到合并变更方面的冲突。在这种情况下,您需要在比较编辑器中手动的合并变更。双击文件以打开比较编辑器。在比较编辑器中手动合并变更。一旦您手动的合并了变更,那么您可以在“Pending Patch”文件夹中选择变更,右击并选择“Remove from view”。
  7. 检入本地工作区中的变更到新的变更集中。理想条件下您可以将新的变更集与相同的工作项关联起来,因为变更集已经被恢复,而且包含了变更集被恢复的说明。
  8. 提交包含了恢复流程的变更集。

您也可以通过将构件的配置替换为不包含变更集的基线,来从流程中放弃变更集。但是,当某个变更集以这种方式从流程中删除的话,那么对于还没有接受它的人来说,它将会显示为一个输出的变更集。同样对于已经在变更集顶部构建的人来说,也会造成问题。

  1. 在包含不想要变更集的构件上打开 History 视图。
  2. 找到您想在 History 视图中移除的变更集。
  3. 右击变更集并选择“ Discard”。您不能放弃一个没有合并的变更集 。如果有其他的变更集,构建在变更集中的资源上的话,那么您句可以放弃它了。在这些情况中,您需要按照以下步骤去创建一个恢复的变更集。
  4. 在 Pending Changes 视图中,放弃的变更集,将会再次作为流程中的 incoming 。
  5. 创建一个新基线。选择变更集放弃的构件,右击并选择“New > Baseline”。您将会被告知基线中没有包含的输入变更,这无妨。理想条件下,您将会被提供基线中的信息,和/或识别 您放弃的某个变更集。
  6. 使用新的基线去替换流程的构件配置。选择构件,右击并选择“Replace in ”。您会被询问以确认您想要替换的流程中的内容。在替换开始之前,将会先创建流程构件的基线。该基线包含了被放弃的变更集。基线与流程的构件相关联,就允许您去比较它,或者甚至使用它来替换工作区的构件。


搜索变更

我放弃了正在进行的变更集,但是现在我有非常需要它,那么我应怎样把它找出来?

如果您放弃的变更集与工作项关联的话,您可以从工作项中找回它。在链接部分中打开工作项,您将会看到与工作项相关的变更集。选择您的变更集,并从菜单内容中(右击)选择接受,以接受它回到您的工作区。您可以通过双击它开在 Change 浏览器中打开它。

如果变更集没有与一个工作项相关联,那么您需要搜索以找到它。

  1. 在 pending changes 视图中,点击菜单栏右上角的三角形图标 。
  2. 从下拉菜单中选择“Search for Change sets...”。

Pending changes drop-down menu

  1. 该操作会显示出一个对话框,允许您去指定您想要搜索的变更集的细节内容。您会想要在与变更集相关的构件中填充,而不是工作区(因为它并不属于任何工作区,它被放弃了)。也可以在 Current User 中填充以作为创建期,这可以帮助缩小搜索得到的结果。
  2. 变更集会发现,符合规则的变更集会显示在 Search 视图中。
  3. 选择您所放弃的变更集,右击并从内容菜单中选择“Accept”。

我们在不久前删除了一个文件。我应该怎样恢复它?

首先,您需要找到删除文件的变更集。恢复该变更集并应用删除文件的附加物、因为 Jazz 会在特性的基础上追踪资源,您可以显示它的历史记录,包括在删除之前的对其所做的变更。这要比试着复制它,并粘贴到一个新的文件中要好的多,因为该操作不用去留下历史记录。

  1. 为了在变更视图中找到变更集,点击菜单栏右上角的三角形图标。
  2. 从下拉菜单中选择“Search for Change sets...”。
  3. 在出现的对话框中,提供关于构件、工作区以及创建变更集的时间框架的尽可能多的细节信息。在对话框的底部,有一个部分,可以搜索带有特定种类变更的变更集。搜索删除的变更,并指定您所感兴趣的文件的名字。例如,如果 Markus 正在搜索从他的工作区中的 JUnit 构件中删除的 Logo.java 文件,他可能会以以下搜索标准进行填写。


Change set search criteria

  1. 符合标准的变更集将会显示在 Search 视图中。
  2. 搜索删除文件的变更集,右击并从内容菜单中选择“Reverse”。这将会为变更集中的所有变更都创建一系列的标准。
  3. 在 pending changes 视图中,展开“Pending patches”以查看所有恢复的变更。找到您想要恢复的文件。这将会是一个附加的补丁。
  4. 选择附加,右击并选择“Merge into Workspace”。这将会把文件恢复到您的本地工作区中去。
  5. 在“Pending patches”文件夹中选择剩余的变更,右击并选择“Remove from view”以忽略变更集中的其他变更。
  6. 检入恢复的文件到变更集中,并在准备好以后提交。

如果我的变更集在一个发布版本中,或者一个构建中,那么我应该怎样去发现 它?

通常认为公布版本在时间上非常重要,我们推荐您去您去创建快照或者基线,以便及时的找到配置点。如果这样的话您可以稍后再重建配置。有时也会使用单独的流程去追踪其他公布版本的变更。团队会为常见构建的配置重建一条基线,查看 “使用 Jazz 源代码版本控制进行多流开发” 以获取更多的细节。

如果您知道什么基线、快照或者流程代表一个公布版本或者构建基线的话,那么您可以决定,是否让您的变更集位于该配置中。

  1. 选择您的变更集。变更集可能会显示在工作项编辑器链接中,然后变更集会搜索结果栏以及变更浏览器。
  2. 右击并从内容菜单中选择“Locate Change set...”。
  3. 在出现的对话框中指定您所想要搜索基线、快照或者流程的搜索标准。您可能会需要点击 Next 以彻底的指定标准。
  4. 在输入所有的标准之后点击 Finish 。
  5. 当搜索完成以后,您会被告知搜索的变更集是否找到了,您将有机会在历史视图中看到结果。

故障排除

我的本地工作区与我的存储库工作区失去了同步性,它是怎么发生的?我应该怎样去处理它?

Jazz 可以探测在存储库工作区中对一个构件发生的改变,但是在您的本地工作区中却不会显示出来。一旦它所删除的内容脱离了同步性,您会被提供一些关于怎样让您的工作区重新同步化的建议。

它是怎样发生的?

一般在工作区完全更新之前,您就进行了涉及到了更新存储库工作区中配置的操作的情况下,会发生脱离同步性,该操作预期会取消或者失败。大多数涉及到变更或者冲突的操作,都会影响到构件配置(例如,接受、放弃、冻结、恢复、解决冲突、取消检入变更等等)。如果您在载入所有内容之前就加载了工作区的话,那么这也会发生 。一种比较少见的情况是,当您在多个本地工作区中拥有相同的存储库工作区,而且您通过一个工作区编辑了存储库工作区的内容的话,这种情况也会发生(其他的本地工作区会脱离同步性)。

您应该怎样做?

  • 如果您没有等待检入的未解决改变的话,很容易解决。

您只需载入脱离同步性的项目。载入是逐渐进行的,而且它只会载入丢失的资源。当您运行影响到构件配置的操作时,它首先会检查本地工作区是否还保持了与该构件的同步性。如果没有,您将会被告知项目脱离了同步性,并需要重新加载它们。一旦重新加载完成后,原始操作将会继续。如果您能确定您的其他构件在不在同步性的话,您可以重新加载整个的工作区。在加载向导中,您可以看到让您确认重写现存项目的页面,点击“Select Out of Sync”按钮,以选择脱离同步性的项目。这也有助于减少载入时间。


  • 如果您没有检出变更的话

如果您与愿意放弃变更的话,重载会是一种选项(文件会被存储库工作区中的版本所替代)。如果您不愿意放弃变更,您应该取消当前的操作并回到同步化中。为了保存您所做的变更,您应该创建一个补丁。选择未检入的变更,右击并选择“New > Patch”。在某个文件中保存补丁。载入工作区。在加载向导中,您可以看到让您确认重写现存项目的页面,点击“Select Out of Sync”按钮,以选择脱离同步性的项目。重载是逐渐进行的。一旦 Eclipse 工作区重新回到同步化(并且在载入期间没有出现错误),那么您就可以应用补丁了,从菜单栏中选择“Project > Apply Patch”。一旦您在 pending 补丁变更中合并的话,您就可以进行更新并继续原始操作了。

我想要共享一个项目,但是我碰到了一个代码不匹配内容的错误。

基本上,有一种 Jazz 在检查项目内容时试着阅读的文本文件,这不会成功,因为该内容并不遵循编码规则。国务信息应该向您提供关于导致问题的文件名。

在 Eclipse 中,您会有一个文本文件而默认编码。为了看一下它究竟是什么,从工具栏中选择“Windows > Preferences... > General > Workspace”。如果对于大多数的文本文件没有编码的话,您应该在这里变更它。当在一个团队中工作的话,您应该决定您和您团队将会共同使用的编码规则。服务器应该可以使用该编码规则(为了让编码规则更好的进行工作)。您会需要与团队的其他成员交流。以决定编码规则。

Eclipse 还允许您去忽略不同于剩余所有编码规则的私人文件。为了做到这一点,在包裹浏览器(或者导航器)视图下,选择文件。右击并选择“Properties... > Resource”以打开属性浏览器。现在您可以变更文本文件编码了。我们发现 “ISO-8859-1”编码规则是最常用的特征。您应该检入文件编码变更的“.settings”文件。

一旦设置好了编码规则,您应该再次试着检入项目。

我不能自动解决非 XML 以及非 Java 文件上的冲突。怎么办?!

只有自动解决 Jazz 认为是文本的文件类型的冲突才是可能的。如果您试着自动解决非文本文件上的冲突,您将会看到一个写有以下文字的对话框:

没有冲突能够被自动解决。您必须手动合并它们。每个类型冲突的管理器上,都提供了关于冲突以及怎样解决它们的方法的解释。

或:

有些冲突不能自动解决。您将不得不手动的合并它们。每个类型冲突的管理器上,都提供了关于冲突以及怎样解决它们的方法的解释。

为了避开这些问题,您应该让 Jazz 把这些冲突文件类型当作文本来处理:

  1. 打开“Window > Preferences > General > Content Types”。
  2. 在“Content Types" pane, select "Text”中。
  3. 点击“File Associations”格子旁边的“Add...”按钮。
  4. 输入文件类型的扩展名(例如为 HTML 文件输入 *.html)。然后点击“OK”。
  5. 在参考对话框中点击“OK”。

Jazz 将会把以给定名字作为扩展名的文件当作文本文件来处理。现在您就可以自动合并这种类型的文件了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14780873/viewspace-582418/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-07

  • 博文量
    211
  • 访问量
    325234