Bazaar:我需要分店吗?

时间:2013-06-18 04:14:05

标签: version-control branch bazaar vcs-checkout

我是VCS的新手,我只是想了解如何根据我的情况使用Bazaar。我的情况是,我是一个网站开发人员,他在一个网站上工作,该网站包含一个实时网站,例如www.mysite.com和一个临时/开发站点,例如dev.mysite.com。我正在使用Bazaar Explorer,因为我不是一个真正的命令行类型的人。我只是从一台主计算机上工作,然后通过FTP将文件上传到Web服务器。我在我的本地Windows计算机上安装了Bazaar。

首先,我在本地计算机上创建了一个Bazaar项目。我坚持使用默认的“功能分支”选项,因为Bazarr文档说这对小型项目来说是最好的(但是即使在阅读完文档后我也没有完全掌握工作区模型之间的差异)。这创建了一个文件夹(我称之为_Source Control),子文件夹trunk和.bzr。我将所有项目文件(即网站文件)复制到trunk中并进行初始提交。

现在我的第一个问题是我应该直接处理这些文件,还是需要让另一个分支继续工作?

这个工作流程是一种明智的方法还是有明显更好的方法?:

  • 处理主干中的某些文件
  • 在我检查错误,功能等时将更新的文件FTP到登台站点。
  • 一旦我达到了我已完成某项功能的程度,请提交我的更改
  • 使用bzr-upload插件
  • 将最新版本上传到实时网站

然后,我应该如何处理我发现最新更新引入问题的情况,并且我想将网站推回到以前的版本?是这样的:

  • 恢复到Bazaar的先前版本
  • 使用bzr-upload插件
  • 将此修订上传到实际网站
  • 然后我如何回到最新版本以便我可以解决问题?这是我需要分支的地方吗?
  • 一旦我再次更新文件以解决问题,请执行提交并使用bzr-upload插件将最新版本上传到实时网站

最后一个问题,在我的情况下,Checkout是否相关?

2 个答案:

答案 0 :(得分:2)

在Bazaar中,单个分支是项目文件的线性历史记录。只要您想同时处理项目的多个版本,就需要多个分支。当涉及多个开发人员时,这自然会发生,但对单人项目也很有用。

例如,它允许您继续开发新功能作为功能分支的一部分,同时在主分支上添加,测试和部署错误修复。功能完成后,可以将其合并回主分支。同样,如果你想尝试一些你可能想要或不想作为主代码库的一部分的东西,那么最好有一个实验分支。

对于简单项目,可能只需要一个主分支,但无论如何都要熟悉分支,因为它有许多非常实用的用例。

为了处理您描述的“问题”场景:首先,获取您拥有的最后一个工作版本。有很多方法可以实现这一目标:

  • bzr checkout可用于在不同的工作目录中创建特定分支和修订的新签出。然后,您有一个包含旧版本的目录和一个包含新版本的目录。
  • 为此目的,
  • bzr branchbzr checkout大致相同,但也会根据指定的修订在新目录中创建一个独立的分支。如果如上所述,您需要同时处理旧版本和新版本,这将非常有用。
  • bzr update可用于将当前目录切换到其他版本。然后,您可以执行任何想要部署旧版本的操作,并再次使用bzr update切换回最新版本。

答案 1 :(得分:2)

Bazaar Explorer的Feature branches选项创建了一个所谓的共享存储库,并在其中创建了一个名为trunk的分支(称为存储库树)。在您的示例中:

  • _Source Control == 共享存储库
  • _Source Control/trunk == 存储库树

我们的想法是,在此设置中,您可以在trunk旁边创建多个分支,它们将通过共享存储库中的内容有效地存储修订数据,简而言之。

如果您是初学者,那么不要担心分支机构。在某些时候它可能会自然而然地来到你身边。例如,你意识到你想要做一些实验,但你不想弄乱你的行李箱。显而易见的解决方案是创建一个分支。

现在关于您的工作流程:

  • 我认为您可以为暂存网站和实际网站使用bzr upload插件。

  • 要将您的实际网站回滚到以前的版本,请使用bzr upload -rREV --overwrite,其中REV是您要回滚的修订版。使用--overwrite看起来很脏,而且很可能。但这是它对我有用的唯一方式,我认为这是我的插件版本中的一个错误(1.0.1dev),我建议首先尝试没有那个标志。

  • 要修复错误,无需在本地回滚,只需修复错误并确认错误,然后使用bzr upload再次上传,而不使用其他标记,以使网站升级到最新版本。< / p>

与Bazaar合作的方式有很多种。您可以实现漂亮而复杂的工作流程,或使用这种有点脏但简单易懂的工作流程。如果您还有其他问题,请告诉我。

不,您在所描述的设置中不需要checkout