我搜索了相关的问题,但是找不到与我的具体情况相符的任何东西:我有一些SVN服务器的旧存储库档案,这些档案在几年前被删除了.它们是服务器上原始存储库结构的tarball.我想要做的是将它们转换为git存储库,作为未来工作/恢复项目的基础.我已经阅读了几个关于转换过程的教程,我想我可以找出作者转换,分支映射等,但他们都假设你有一个SVN服务器和一个存储库的URL.我是否需要安装和设置SVN服务器才能进行此转换,或者我是否可以通过某种方式指向git clone或者svn2git(或其他工具)在我的repo转储中?
我试图在svn2git的帮助下将SVN项目迁移到git.执行命令时,它退出时出现以下错误:
Running command: git branch --track "0.0.9" "remotes/svn/0.0.9"
fatal: Cannot setup tracking information; starting point 'remotes/svn/0.0.9' is not a branch.
Run Code Online (Sandbox Code Playgroud)
开始于:
svn2git http://<host>/<project>
Run Code Online (Sandbox Code Playgroud)
我找不到任何解决方案,似乎没有多少用户有同样的问题.
我该怎么做才能解决这个问题?
我有一个现有的SVN仓库,我想将其中的一部分导入到现有的Git仓库中.任何人都可以给我一个高级概述这样做的命令吗?
摘要:
我有一种感觉,这涉及到git filter-branch一些奇怪的合并.任何帮助,将不胜感激.
我的设置:-server git上的-repository Atlassian Stash和Atlassian Bamboo.我使用的是Maven 3.1.1与release-plugin 2.3.2.该计划Bamboo看起来像这样:
git-repository退房clean installrelease:prepare和release:perform与ignoreSnapshots=true和resume=false直到最后一步的一切都运行良好,但Maven声明它无法标记版本,因为标签已经存在.这是日志:
build 26-Nov-2013 10:36:37 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project [PROJECT-NAME]: Unable to tag SCM
build 26-Nov-2013 10:36:37 [ERROR] Provider message:
build 26-Nov-2013 10:36:37 [ERROR] The git-tag command failed.
build 26-Nov-2013 10:36:37 [ERROR] Command output:
build 26-Nov-2013 10:36:37 [ERROR] fatal: tag '[PROJECT-NAME]-6.2.2' already exists …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 SVN 存储库转换为 Bit Bucket,该存储库已有 18 年的历史、超过 6000 个分支和超过 50 万次提交。
Git svn 在大约 6 小时内完成了前 50k 次提交,并花了 3 天来转换接下来的 40k 次。由于缺少作者以某种方式设法逃避 svn 日志,它已经崩溃了两次并停止了两次。
它已经到达了仓库中分支开始被更广泛使用的部分。现在它已经慢得像爬行一样。树枝给它带来了严重的悲伤。可能会降低到每 2-3 分钟一次提交。每个新分支似乎都会进一步减慢整个操作的速度。
我不知道它把时间花在哪里了。它是 I/O 或 CPU 密集型操作吗?Atlassian建议在SVN所在的地方运行操作;放在本地磁盘上——没有网络行。我不知道这是否有帮助,因为它不需要花时间从 SVN 中提取文件。它是否在分支上运行提交并且未在控制台上显示?
我认为将其拉入 Bit Bucket 是不可行的。我认为最好将所有新开发移至 Bit Bucket 并继续运行 SVN。按照目前的转换速度,需要几年时间才能完成。
我们正在尝试使用svn2git实用程序(https://github.com/nirvdrum/svn2git)从svn迁移到git .实用程序似乎每次都失败,出现以下错误.如果有人看到相同的错误或有更好的选择,请分享.
命令
svn2git https://xyz.xyz.com/svn/svnrepo/ --verbose --authors authors.txt
控制台输出
Running command: git svn init --prefix=svn/ --no-metadata --trunk='trunk' --tags
='tags' --branches='branches' https://xyz.xyz.com/svn/svnrepo/
Running command: git config --local --get user.name
Running command: git config --local svn.authorsfile authors.txt
Running command: git svn fetch
Running command: git branch -l --no-color
Running command: git branch -r --no-color
Running command: git config --local --get user.name
Running command: git config --local --get user.email
Running command: git checkout -f master
error: pathspec 'master' did not match …Run Code Online (Sandbox Code Playgroud) 我目前正在将一个历史悠久的巨大存储库从 SVN 迁移到 git。svn 仓库有很多分支和标签。我已经从 SVN 存储库中清除了很多它们,但是当我使用该git svn clone命令时,它也会克隆所有已删除的分支和标签。
问题是,是否有一种有效且简单的方法(简单命令)来排除使用git svn或svn2git(或任何其他与此相关的工具)获取已删除的分支和标签?
我正在使用svn2git(好的)将一些SVN存储库转换为Git存储库.
它有一个命令行参数--svn-branches,记录在其中
创建分支时使用SVN的内容,注意:SVN标签也是分支
哪些优点和缺点这个命令行参数.
是不是没有它更快,因为只创建了一个Git标签,而不是整个工作树被转储,并且使用它更安全,因为整个工作树被转储或者还有更多的东西?
您会建议使用或省略此参数吗?
我有一个平面 svn 存储库,它看起来像:
my_repo/
??? file1.c
??? file2.c
??? file3.c
??? README
Run Code Online (Sandbox Code Playgroud)
这个 repo 没有分支或标签,我想要做的就是将它转换为 git 存储库并维护提交历史。
我试过了:
git svn clone --trunk=/ -A users.txt svn+ssh://user@svn.example.com/projects/my_repo dest_dir
我认为这会起作用,但是,当我导航dest_dir并执行时git svn fetch,它似乎没有获取任何东西。使用git log产量:
fatal: bad default revision 'HEAD'
如果我使用svn checkout svn+ssh://user@svn.example.com/projects/my_repo
它返回:
A my_repo/file1.c
A my_repo/file2.c
A my_repo/file3.c
A my_repo/README
Checked out revision 57.
Run Code Online (Sandbox Code Playgroud)
因此,存储库是活动的且可访问的。
我尝试了各种工具,包括subgit给我这个错误的工具:svn: E170003: 'stat' not implemented我认为这是因为托管存储库的服务器使用的是旧版本的 subversion。我无法控制服务器,因此无法执行更新。
我也试过使用svn2git, 使用命令
svn2git svn+ssh://user@svn.example.com/projects/my_repo --rootistrunk -authors users.txt …
由于几天,我git-svn挂在Found possible branch point: .../trunk => .../branches/foo, 8809当我这样做git svn fetch.
克隆实际上163671已经进行了修订.我的盒子最近冻结了,所以它可能会git svn fetch在它冻结的时候卡住了我不得不重新启动我的Windows机器.
我试图移开.git/svn/并git svn恢复,但它只是重建trunk和其他一些,然后再次挂在完全相同的位置.
有没有人知道它为什么会突然挂在那里以及如何恢复除了需要一周左右的新git svn克隆.我更愿意,如果有另一种方式.
我有一个非常大的 SVN 存储库(近 6000 个修订版),我需要将其迁移到 Git。该存储库托管在内部服务器上。我想将所有历史记录、标签和版本迁移到 Git,并以 Git 格式创建分支等。
到目前为止,我在我的机器上安装了 TortoiseSVN,并一直在尝试使用 git svn clone,但是,很多文件夹太大,并且出现块大小错误。同时,某些文件的文件路径中包含非法字符,因此在迁移过程中会被跳过。
我还尝试使用 TortoiseSVN 将工作副本检出到本地计算机中,然后尝试通过设置本地svnserve(设置为 Windows 服务)来迁移它,但是,我永远无法使其能够访问文件使用svn://localhost/...我按照指南(https://subversion.open.collab.net/articles/svnserve-service.htm)将其设置为服务,我可以到达例如svn://localhost/dev,但是,当我通过Tortoise将文件检出到此文件夹中时,它没有看到它们,svn://localhost/dev/<sub-folder>显然我做错了什么,但是,我不确定是什么。
结构如下:
repository (top level)
- folder 1
- sub-folder 1
- sub-folder 2
- ...
- folder 2
- sub-folder 1
- ...
- ...
Run Code Online (Sandbox Code Playgroud)
最后,我尝试使用 svn2git,但是,在这种情况下我也遇到错误。
进行迁移的最佳方法是什么和/或我做错了什么?任何帮助表示赞赏!
(我发布这个问题的目的是为了自己回答这个问题,因为我在其他地方找不到答案.希望它能帮助遇到同样问题的其他人,下次我试图这样做时会帮助我.)
挑战
我想将SVN存储库转换为本地托管的gitlab GIT存储库并维护历史记录.
安装程序
Gitlab 8.5,Ubuntu 14.04 LTS,颠覆1.8.8
问题
使用git-svn或svn2git从svn转换为git的初始尝试导致以下错误.
错误
svn-remote.svn: remote ref '//example.com:81/svn/myrepository/trunk:refs/remotes/trunk' must start with 'refs/'
我试过的
我在下面的外部参考资料中都遵循了两个指南.
使用外部参考
我正在使用svn2git来测试svn存储库到git的迁移。现在我的svn像这样构建
myproj 包含
repo1 /
repo2 (obsolete)/
old/
Run Code Online (Sandbox Code Playgroud)
每个回购都包含自己的分支,标签等。我只需要repo1中的所有内容。当我开始流程时,我得到以下信息:
svn2git https://server/myproj/repo1 --username LVO
Run Code Online (Sandbox Code Playgroud)
输出:
Initialized empty Git repository in /folder/.git/
Using higher level of URL: https://server/myproj/repo1 => https://server/myproj
Run Code Online (Sandbox Code Playgroud)
并且比该过程开始。恐怕它也会占用所有其他旧仓库。这是启动它的正确方法吗?:
$ svn2git https://server/myproj/repo1 --username xxx --trunk=/repo1 --branches=/repo1 --tags=/repo1
Run Code Online (Sandbox Code Playgroud)
(尤其是行李箱的东西对我来说还不清楚)。当我的仓库在这棵树中时,我该如何启动svn2git。