gpt4 book ai didi

SVN:最小化将项目移动到其自己的存储库所需的转储

转载 作者:行者123 更新时间:2023-12-01 06:28:27 25 4
gpt4 key购买 nike

我原来的问题在下面。我已经尝试了一些事情,看看我是否可以让它工作。

我有一个像这样的小 shell 脚本:

svnadmin dump -r108917 ./repo \
| svndumpfilter include /KeyManagement \
--drop-empty-revs \
--skip-missing-merge-sources \
--renumber-revs > km.svndump \

while read rev
do
svnadmin dump -r$rev --incremental ./repo \
| svndumpfilter include /KeyManagement \
--drop-empty-revs \
--skip-missing-merge-sources \
--renumber-revs >> km.svndump
done << km.revs.txt
km.revs.txt是一个文本文件,只包含修订版,其中包含对 /KeyManagment 的更改。项目。

当我第一次这样做时,我以为我是在之后进行过滤。然而,在第一个版本中, km.svndump大小增加到 68 GB 以上。哎呀。在第二次尝试中,我通过 svndumpfilter 过滤项目.

这运行了很长一段时间(我 nohup 做了这个,只是不时地检查一下)。当我完成时,我得到了 km.svndump显示了 UUID、第一个修订版和内存不足错误。显然,我的脚本没有通过要转储的第一个修订版。

任何想法如何继续?

我们有一个带有特殊项目的存储库,该项目与存储库的其余部分确实不兼容。 LDAP 组中的任何用户都可以看到整个存储库 Development .但是,一个项目包含我们只希望从事该项目的人员看到的信息。 (我们的 KeyManagement 项目)。 Repo 布局如下所示:
  • /trunk - 其余 repo 的主干
  • /branches - 其余 repo 的分支
  • /tags - 其余 repo 的标签
  • /KeyManagement - 特殊的 key 管理项目。

  • 为了防止窥探,我们使用 svn_acces 文件来指定可以看到此内容的用户。这在维护中造成了很多问题,我只想做 KeyManagement具有自己的 LDAP 访问组的单独存储库。 (我们已经有多个拥有自己 LDAP 组的存储库)。

    问题是我们的 repo 中有超过 175,000 次修订,其中只有 124 次与 KeyManagement 项目有关。转储所有 175,000 个修订需要大约 30 多个小时。如果我可以直接转储我需要的修订,我可以在几个小时内完成整个转储。

    另一个问题是这样的:
    $ svn log -r108917:108918 -v $REPO
    ------------------------------------------------------------------------
    r108917 | svnadmin | 2011-03-23 00:46:04 -0500 (Wed, 23 Mar 2011) | 1 line
    Changed paths:
    A /KeyManagement

    New folder KeyManagement
    ------------------------------------------------------------------------
    r108918 | svnadmin | 2011-03-23 00:47:18 -0500 (Wed, 23 Mar 2011) | 1 line
    Changed paths:
    A /KeyManagement/trunk (from /trunk/KeyManagement:108917)
    D /trunk/KeyManagement

    Move the KeyManagement
    ------------------------------------------------------------------------

    显然, KeyManagement曾经也在 /trunk下.我以前使用 svndumpfilter 进行转储和加载的经验是我必须转储和加载 /KeyManagement/trunk/KeyMangement同时。说实话,我不在乎 /trunk/KeyManagement因为应用程序完全重做,没有人关心代码。

    我知道转储的第一个修订版是一个完整的修订版。我是否可以做这样的事情:
    $ svnadmin dump -r108917:108918 old_repo > dump_file
    $ svnadmin dump -r108103 --incremental old_repo >> dump_file #Revision with KeyManagement
    $ svnadmin dump -r107429 --incremental old_repo >> dump_file #Revision with KeyManagement
    ...

    $ svnadmin load --parent-dir new_repo < dump_file

    只需转储与 KeyManagement 相关的修订。我不在乎 /trunk 下的版本.从那时起,该项目已被彻底修改。我知道修订版,我可以轻松地编写一个 shell 脚本来做到这一点。与 KeyManagement 相关的任何修订都没有与任何其他项目纠缠在一起。

    我只是不想花 40 多个小时来做​​这件事。

    最佳答案

    我终于使用了 svnrdump。我不得不转储所有的修订,但它允许我指定我只想要/KeyManagement。与 svndumpsvndumpfilter ,我必须指定 /KeyManagement /trunk/KeyManagment因为那是原始项目所在的地方。

    不幸的是,您不能使用 svndumpfiltersvnrdump ,并且由于报告了所有修订,因此我无法重新编号并忽略空的。

    svnrdump确实允许我只捕获一个目录,即使我无法更改其位置或跳过空修订并重新编号。

    关于SVN:最小化将项目移动到其自己的存储库所需的转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25537659/

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