【发布时间】:2017-10-25 21:33:57
【问题描述】:
我正在分析修订历史,使用git-archive 获取特定修订的文件(请参阅https://stackoverflow.com/a/40811494/1168342)。
该方法有效,但我正在尝试针对具有许多修订的项目进行优化。许多处理浪费在归档(通过 tar)和返回到另一个目录中的文件(再次通过 tar)。
我正在寻找一种不涉及tar 的方法来执行此操作,例如git cp $revision $dest/。以下是我目前探索的内容:
我可以将
git reset $revision --hard方法与文件副本一起使用,但它会使分析的并行化无效,除非我创建了存储库的多个副本(每个线程/进程一个)。有一个 Java project using JGit called Doris 可以通过低级操作完成此操作,但是当有奇怪的文件(例如,指向其他 repos 的链接)时它会中断。随着 git 的发展,有很多特殊情况,所以如果可能的话,我不想在底层做这件事。
我知道 Python 有一个 git API,但它的 archive feature 也使用 tar。出于与上述相同的原因,我不想在太低的级别上编写代码。
【问题讨论】:
标签: git optimization jgit gitpython