我们计划在 Git 存储库中迁移我们最后一个大型 CVS 存储库。
对于迁移,我们使用 svn2git 的 cvs2git。因为这个 CVS 存储库已经增长了大约 12 年,所以它有 31GB 的数据。
我找不到任何解决方案来删除超过指定时间段(例如 2 年)的所有历史记录。
您知道其中之一的任何工具/命令/解决方案吗?:
- 从 CVS 删除历史记录
- 不要使用 cvs2git 导出所有历史记录
- 不要使用 Git import 导入所有历史记录
- 从 Git 中删除历史记录
谢谢和问候,安德烈亚斯
Dmitry Oksenchuk 建议的解决方案: 编辑移植后,我编写了一个 BASH 脚本 tp 清理混乱的标签和分支:
#!/bin/bash
NEW_ROOT_REF=$1
git tag --contains $NEW_ROOT_REF | sort > TAGS_TO_KEEP.tmp
echo "Keep Tags:"
cat TAGS_TO_KEEP.tmp | wc -w
git branch --contains $NEW_ROOT_REF | sort > BRANCHES_TO_KEEP.tmp
echo "Keep Branches:"
cat BRANCHES_TO_KEEP.tmp | wc -w
git tag -l | sort > TAGS_ALL.tmp
echo "All Tags:"
cat TAGS_ALL.tmp | wc -w
git branch -l | sort > BRANCHES_ALL.tmp
echo "All Branchess:"
cat BRANCHES_ALL.tmp | wc -w
# Remove tags
COUNTER=0
for drop in `comm TAGS_ALL.tmp TAGS_TO_KEEP.tmp -23`; do
git tag -d $drop
COUNTER=$[$COUNTER +1]
done
echo "Dropped tags: $COUNTER"
# Remove branches
COUNTER=0
for drop in `comm BRANCHES_ALL.tmp BRANCHES_TO_KEEP.tmp -23`; do
git branch -D $drop
COUNTER=$[$COUNTER +1]
done
echo "Dropped branches: $COUNTER"
# Clean up
rm TAGS_ALL.tmp TAGS_TO_KEEP.tmp BRANCHES_ALL.tmp BRANCHES_TO_KEEP.tmp