gpt4 book ai didi

svn - 将现有的 Git 存储库推送到 SVN

转载 作者:IT王子 更新时间:2023-10-29 01:11:19 26 4
gpt4 key购买 nike

我一直在 Git 中完成所有工作并推送到 GitHub。我对软件和网站都非常满意,此时我不想改变我的工作习惯。

我的博士导师要求所有学生将他们的工作保存在大学托管的 SVN 存储库中。我找到了大量关于将现有 SVN 存储库下 pull 到 Git 的文档和教程,但没有找到关于将 Git 存储库推送到新的 SVN 存储库的内容。我希望一定有某种方法可以通过结合使用 git-svn 和新分支以及 rebase 和所有这些美妙的术语来做到这一点,但我是 Git 新手,对它们中的任何一个都没有信心。

然后我只想运行几个命令来在我选择时将提交推送到该 SVN 存储库。我希望继续使用 Git,并让 SVN 存储库镜像 Git 中的内容。

如果这有什么不同的话,我将是唯一一个致力于 SVN 的人。

最佳答案

我也需要这个,在 Bombe 的回答的帮助下 + 一些摆弄,我让它工作了。这是食谱:

导入 Git -> Subversion

1. cd /path/to/git/localrepo
2. svn mkdir --parents protocol:///path/to/repo/PROJECT/trunk -m "Importing git repo"
3. git svn init protocol:///path/to/repo/PROJECT -s
4. git svn fetch
5. git rebase origin/trunk
5.1. git status
5.2. git add (conflicted-files)
5.3. git rebase --continue
5.4. (repeat 5.1.)
6. git svn dcommit

在#3 之后你会收到这样一条神秘的信息:

Using higher level of URL: protocol:///path/to/repo/PROJECT => protocol:///path/to/repo

忽略它。

当您运行 #5 时,您可能会遇到冲突。通过添加状态为“unmerged”的文件并恢复 rebase 来解决这些问题。最终,你会完成的;然后使用 dcommit 同步回 SVN 存储库。就这样。

保持存储库同步

您现在可以使用以下命令从 SVN 同步到 Git:

git svn fetch
git rebase trunk

要从 Git 同步到 SVN,请使用:

git svn dcommit

最后的说明

在应用到实时存储库之前,您可能想在本地副本上尝试一下。您可以将 Git 存储库复制到一个临时位置;只需使用 cp -r,因为所有数据都在存储库本身中。然后,您可以使用以下方法设置基于文件的测试存储库:

svnadmin create /home/name/tmp/test-repo

然后检查工作副本,使用:

svn co file:///home/name/tmp/test-repo svn-working-copy

这将允许您在进行任何持久更改之前先尝试一下。

附录:如果你搞砸了 git svn init

如果你不小心用错误的 URL 运行 git svn init,而且你不够聪明,没有备份你的工作(别问......),你不能只需再次运行相同的命令。但是,您可以通过发出以下命令来撤消更改:

rm -rf .git/svn
edit .git/config

并删除 [svn-remote "svn"] 部分。

然后您可以重新运行 git svn init

关于svn - 将现有的 Git 存储库推送到 SVN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/661018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com