从Fossil导出到Git

5
我一直在尝试使用这里的指南将我的化石仓库导出到git。我看过这个问题,但它没有回答我的问题。
我按照https://www.fossil-scm.org/xfer/doc/tip/www/inout.wiki上的所有说明操作,但似乎无法工作。
我做了以下操作:
git init new-repo
cd new-repo
fossil export --git ../repo.fossil | git fast-import

我得到了统计数据:
git-fast-import statistics:
---------------------------------------------------------------------
Alloc'd objects:      10000
Total objects:         8831 (         8 duplicates                  )
      blobs  :         5578 (         0 duplicates       3374 deltas of       5224 attempts)
      trees  :         2509 (         8 duplicates       1419 deltas of       2378 attempts)
      commits:          744 (         0 duplicates          0 deltas of          0 attempts)
      tags   :            0 (         0 duplicates          0 deltas of          0 attempts)
Total branches:           1 (         1 loads     )
      marks:        1048576 (      6322 unique    )
      atoms:           4253
Memory total:          2704 KiB
       pools:          2235 KiB
     objects:           468 KiB
---------------------------------------------------------------------
pack_report: getpagesize()            =       4096
pack_report: core.packedGitWindowSize = 1073741824
pack_report: core.packedGitLimit      = 8589934592
pack_report: pack_used_ctr            =       2936
pack_report: pack_mmap_calls          =        744
pack_report: pack_open_windows        =          1 /          1
pack_report: pack_mapped              =  207355128 /  207355128
---------------------------------------------------------------------

我没有发现问题,但是我没有一个有效的存储库。我错过了什么步骤吗?我在古生物文档中没有找到更多信息。提前感谢。
编辑:作为下面问题的答案,我尝试了使用export命令的-R选项和不使用-R选项。
3个回答

5
你需要检出新的Git存储库中的主干分支。默认情况下,git init命令创建并检出名为master的空分支。但Fossil将trunk用作其主要分支。因此,在git fast-import之后调用git checkout trunk,您将能够在工作目录中看到所有文件。

3
首先,如果成功运行,则会导入到trunk分支中,而git的默认分支是master,因此请尝试使用@Colin D Bennett所说的git checkout trunkgit branch查看存储库中是否列出任何分支。
如果未能工作或者git branch未列出任何分支,则fossil export未能正常工作。
现在,我之前也遇到过导出fossil存储库的问题,但错误不同: 尝试将化石存储库导出到git时出现“无法打开数据库文件” 我解决问题的方法是:
  1. git init git-repo
  2. cd fossil-repo
  3. fossil export --git > git.txt
  4. git.txt移动到git-repo
  5. type/cat git.txt | git fast-import
  6. git checkout trunk
  7. 完成

我会尝试并让你知道。我放弃了它。 - starflyer
这对我非常有效,+1 - shmup

2

用法: fossil export --git ?选项? ?代码库?

将所有检入的导出内容写入标准输出。如果提供了--git选项,则导出内容将以git-fast-export文件格式写入。目前,git-fast-export格式是唯一支持的VCS交换格式,但将来可能会添加其他格式。

在检出中运行此命令。或使用-R或--repository选项指定要导出的Fossil存储库。

--git仅导出检入。Git不支持票据、wiki、事件或附件,因此这些内容都不会被导出。

如果使用"--import-marks FILE"选项,则包含要跳过的rid列表。

如果使用"--export-marks FILE"选项,则在退出时写入所有提交和blob的rid,以便在下一次运行时使用"--import-marks"。

选项: --export-marks FILE 将导出数据的rid导出到FILE --import-marks FILE 从FILE读取要忽略的数据rid --repository|-R REPOSITORY 导出给定的REPOSITORY


我两种方式都试过了,一种是带有,另一种是不带有。 - starflyer
尝试创建简单的代码库并进行转换,我认为它只能转换简单的代码库... - Anatoly Ruchka
啊,我想我可以做到。但是我猜那对我正在尝试导出的仓库没有帮助。有没有针对较大仓库的解决办法? - starflyer
将所有源代码迁移到新的仓库,并尝试将此干净的仓库导出到Git。 - Anatoly Ruchka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接