将GIT仓库中的每个父目录转换为自己的仓库

时间:2011-08-12 02:42:22

标签: git svn split repository

我有一个庞大的SVN回购,里面有很多项目,每个项目都在自己的目录中。

MyMassiveSVNRepo

  • 项目1
  • project 2
  • 项目3
  • project 4

依旧......

我将它转换为GIT回购,但现在它只是一个巨大的GIT回购。是否有一个我可以运行的脚本(或者有人可以创建),让我将每个父目录放入自己的GIT仓库? (并希望仍保留历史)

所以当脚本完成后,我在我的大量GIT仓库中为每个项目都有一个仓库,而我有很多小的Git Repos? Repo太大(15演出)要复制150次,然后删除每个项目中不需要的所有文件......

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

#!/bin/bash
set -o nounset -o errexit -v
for project in $@; do 
    mkdir -p ${project}_tmp
    cd ${project}_tmp
    git svn init http://svn.example.com/repository/${project}/trunk/ \
        --no-metadata
    git config svn.authorsfile ../svn_users.txt
    git svn fetch
    find */ -type d -empty | xargs -I{} touch "{}/.gitkeep"
    find */ -type f -name .gitkeep | xargs git add
    git commit -a
    cd ..
    git clone ${project}_tmp ${project}
    rm -fr ${project}_tmp
done

用法:

./convert.sh project1 project2 project3