gpt4 book ai didi

svn - 在不导入完整历史记录的情况下使用 Bazaar 镜像 Subversion 存储库?

转载 作者:行者123 更新时间:2023-12-01 15:29:12 24 4
gpt4 key购买 nike

我想使用 Bazaar 来处理一个使用 Subversion 且历史悠久的项目。例如 svn://svn.freebsd.org/base/head

有一个很好的插件 bzr-svn 可以用来处理 SVN 存储库。有一些相关工作流程的例子here .

我的问题是,我发现的所有内容似乎都是在假设我想从 SVN 导入完整历史记录的情况下编写的。我不想那样做。它占用太多磁盘空间(实际上,如果我尝试,导入将耗尽内存)。我真的不关心某个 SVN revno/tag 之前的任何更改。但我确实想让每个人在截止点之后提交,以便在 Bazaar 端正确显示。我怎样才能做到这一点?

我的供应商分支基本上需要以下逻辑(我可以从中创建本地分支):

svn co svn://svn.freebsd.org/base/head -r CUTOFF_REVNO

while true
do
svn up -r NEXT # note: NEXT is not possible even though there is PREV
bzr commit
sleep N
done

显然上面没有在 Bazaar 中存储提交消息和其他类似的东西,这是一个问题。我可以将其设为每天的 cron 作业,它只执行 svn up 并在一天内将所有 SVN 更改提交到 Bazaar 分支中,每天提交一次。

我怎样才能做到这一点,以便将元数据和个人提交正确转换为 Bazaar(与在 SVN 端发生的粒度相同)?我不需要能够推送到 SVN。我所需要的只是一种单向解决方案。我希望某个地方有一个工具可以做到这一点!

最佳答案

我想我找到了一个潜在的解决方案,所以我自己回答。

有一个工具叫做 Tailor可以做到这一点。它是一个通用解决方案,因此适用于大多数流行的版本控制系统(例如 CVS、SVN、Bazaar、Mercurial、Git、Darcs 等)。

为了完成我所要求的,我需要以下配置文件,例如 freebsd-tailor.conf:

[DEFAULT]
verbose = True
projects = freebsd-current

[freebsd-current]
root-directory = /home/tailor/freebsd-current
subdir = upstream
source = svn:freebsd-current
target = bzr:freebsd-current
start-revision = 225424

[svn:freebsd-current]
repository = svn://svn.freebsd.org/base
module = /head
encoding = iso-8859-1

[bzr:freebsd-current]

然后我只运行 tailor -c freebsd-tailor.conf 在 revno 225424 进行初始同步,然后每次我想增量获取新更改时重新运行命令。

我目前正在测试这个。无论成功或失败,我都会更新我的答案。其他解决方案仍然受欢迎。 :)

更新:

我简化了配置示例并添加了 encoding 条目,这似乎是许多项目所必需的。

到目前为止,我的测试结果是 tailor 不幸的是对于大型项目(例如在我的示例中)不是很健壮。由于某种原因,我的 bzr 存储库中缺少一个子目录,并且使用 tailor 拉取更新非常缓慢并且占用大量资源。也许它适用于小型项目。我喜欢 tailor 有这么多不同 VCS 的后端,并且对它们的差异持中立态度。

关于svn - 在不导入完整历史记录的情况下使用 Bazaar 镜像 Subversion 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com