有没有办法轻松地将源树的一系列tarball转换为git存储库?

Hot*_*tei 8 git

我是git的新手,我从一个长期运行的项目中获得了大量的每周tar包.每个tarball平均有几百个文件.我正在寻找一个git策略,它允许我将每个tarball 的扩展内容添加到一个新的git存储库,从版本1.001开始,然后通过1.650版本.截至项目的这个阶段,99.5%的tarball(n)只是版本(n-1)的副本 - 换句话说,是git的完美候选者.期望的最终结果是在过程结束时仅保留主分支.

我想我知道git足够"手工"做到这一点.据我了解,不存在合并冲突的可能性,因为在添加和提交下一个版本之前没有机会更改主服务器.shell脚本是我的第一个猜测,但我不确定当bash在branch_n-1中执行时git checkout branch_n被处理时bash会喜欢它.出于本项目的目的,主机环境是Ubuntu 10.4,可用资源是8千兆内存,500千兆磁盘空间和3千兆位CPU处理器.

我不需要其他人来解决这个问题,但我可以在正确的方向上轻推一下git专家如何接近它.任何"做过那样"的人的建议都会受到赞赏.

布袋

PS:我查看了网站建议的"相关问题",发现没什么相关的.

Ste*_*äwe 8

看一眼 $GIT_SRC_DIR/contrib/fast-import/import-tars.perl


Mar*_*tos 4

对于这条评论:

我不确定当 bash 在branch_n-1 中执行时 git checkoutbranch_n 被处理时 bash 会喜欢它吗

您是否担心两个操作同时运行并互相妨碍?除非您有意并行运行操作,否则这不应该成为问题。

假设 tarball 遵循线性演变,则根本不应该出现分支。

这个过程应该相当简单:

  1. git init
  2. untar ball _n_
  3. git add --all .; git commit(带有适当的标志)
  4. git tag -a v1.001 -m "Version 1.001."
  5. rm -rf *(处理历史记录中的删除;当然,您希望保持 .git 完好无损)
  6. 转到2

  • 您可以将“--date”选项添加到“commit”以及存档的原始日期,以将该信息也记录在 git 历史记录中。 (2认同)