将 GIT 存储库中的每个单独的父目录转换为自己的存储库

发布于 2024-11-29 02:40:14 字数 390 浏览 1 评论 0原文

我有一个巨大的 SVN 存储库,其中包含大量项目,每个项目都在自己的目录中。

MyMassiveSVNRepo

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

等等...

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

所以当脚本完成时,我在我的大型 GIT 存储库中为每个项目都有一个存储库,而不是我有许多较小的 Git 存储库?该存储库太大(15 GB),无法复制 150 次,然后从每个项目中删除我不需要的所有文件......

感谢任何帮助。

I have a massive SVN repo with tons of projects in it, each in their own directory.

MyMassiveSVNRepo

  • project 1
  • project 2
  • project 3
  • project 4

and so on...

I converted it to a GIT repo but now its just one giant GIT repo. Is there a script that I can run (or someone can create) that will let me make each parent directory into its own GIT repo? (and hopefully still retain history)

so when the script is done I have one repo for each project in my massive GIT repo and instead I have many smaller Git Repos? the Repo is far too large (15 gigs) to duplicate 150 times and then delete all the files I don't need from each project...

Any help is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笨笨の傻瓜 2024-12-06 02:40:14
#!/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
#!/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

Usage:

./convert.sh project1 project2 project3
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文