代码之家  ›  专栏  ›  技术社区  ›  NawaMan

试图理解bzr存储库ii

  •  3
  • NawaMan  · 技术社区  · 14 年前

    我想知道 bzr init-repo Repo bzr init-repo Repo --no-trees . 我试过了,似乎看不出有什么不同。

    对于这两种情况,我不能直接将文件添加到repo中(我必须先创建分支)。他们对我的行为似乎一模一样。

    有人能解释一下有什么不同吗?

    编辑: 谢谢大家的回答。然而,在我读了你的答案之后,我仍然不太明白其中的实际差异。

    我做了更多的实验,发现有/没有树,我可以在存储库的一侧创建分支(bzr init)。 但只有有树的,我才能添加一个文件并提交。没有树的那个,我只能从别的地方拉。

    换句话说,没有树的几乎是只读的(“几乎”是因为您仍然可以从其他地方拉新的分支)。 这个有什么用?表演是唯一的原因吗?

    提前谢谢。

    3 回复  |  直到 14 年前
        1
  •  4
  •   wadesworld    14 年前

    为了更清楚地解释,-no trees选项意味着不为存储库中存储的任何分支保留工作树。

    那是什么意思?

    1)存储库不保存源文件。不相信我?把CD放进一个没有树的存储库的一个分支,告诉我“ls”给你带来了什么。没有什么。

    现在,实际存储的是文件的历史记录,以便可以从该历史记录重建文件。

    2)由于没有工作树,因此不能在无树存储库中工作。你自己发现的-你不能承诺。为什么不?因为文件不在那里。只有他们的历史。

    那么,没有树的仓库有什么用呢?如前所述,它们适合于中央服务器。如果您和bob正在进行一个项目,并且您并不总是能够从彼此的个人机器上推/拉,或者您在一家公司工作,希望有一个地方可以存放最新的干净“主干”,那么您可以使用一个没有树存储库的共享服务器。

    这就是它的工作原理。在共享服务器上使用no trees选项创建存储库,然后将“trunk”导入到存储库中。

    然后,使用bzr branch bzr+ssh://mysharedserver/myrepo/trunk trunk\u mirror之类的工具来删除“trunk”的最新副本

    给你一个后备箱的“镜像”副本。然后,为新功能、错误修复等创建镜像副本的分支,提交所需的所有内容。

    现在你要出城了,鲍勃需要你的密码。既然准备好了,就把它合并到后视镜里:

    CD后视镜 BZR合并../My_Really_Cool_Feature_分支 bzr commit“将我的酷特性添加到主干” BZR推送

    最后一步将您对镜像中继的更改推送到共享存储库,bob可以在那里执行“pull”并获取中继的最新副本。

        2
  •  2
  •   bialix    14 年前

    bzr中的主单元是一个分支(用 bzr init )

    共享存储库(使用创建 bzr init-repo )是将多个分支的历史记录存储在一个位置,并在此存储库中的所有分支之间共享此历史记录的附加功能。

    --no-trees 当你的树枝不需要工作树时使用。例如,在中央服务器上。因此,没有工作树的分支在磁盘上占用很少的空间。

    对于分支上的本地工作,您肯定需要工作树,因此需要创建具有树的共享存储库。

        3
  •  0
  •   Wolph    14 年前

    从文件中

    如果使用--no trees选项,那么默认情况下存储库中的分支将没有工作树。

    而工作树是 bzr checkout

    基本上…如果您希望使用存储库并能够提交所做的更改,则需要一个工作树;)