在尝试使用git控件获取项目的旧svn转储时,我遇到了一个有趣的问题.每当我运行时git svn,我都会收到一条错误消息,说它不是git命令,但是我可以使用它来获取文档git help.我的安装有什么问题,或者我在这里遗漏了什么?
编辑:我可能还应该提到我在Windows XP下运行msysGit版本1.6.1.9.g97c34,我得到的错误是:
$ git svn
git: 'svn' is not a
git-command. See 'git --help'.
Did you mean one of these?
fsck
show 目前,我为每个项目设置了根级存储库,如下所示:
Project1
Project2
Project3
Project5
Project5
Run Code Online (Sandbox Code Playgroud)
我想重新组织这个,以便不是每个项目的存储库,而是每个逻辑分组只有一个,然后项目只是这些"组存储库"中的文件夹,例如:
WebSites
Project1
Project2
DesktopApps
Project3
Libraries
Project4
Project5
Run Code Online (Sandbox Code Playgroud)
在保留现有存储库的历史的同时,这是否可行?我看了很多,但我能找到的只是在同一个存储库中移动文件夹,并将文件夹从存储库移动到新的存储库中.
无论如何它只适用于个人的东西,所以如果它只是一个直接的"不",它不是世界的尽头 - 但是知道所以我不仅仅是撞墙而已.
我正在使用git-svn使用git存储库.一切顺利,直到svn存储库的维护者决定将存储库移动到不同的URL.
如何告诉我的git-svn客户端从新的svn存储库中获取?
我已经更改了svn URL svn-remote,.git/config但现在我收到以下错误:
svn-remote.svn.url already set: https://old.svn.repo
wanted to set to: https://new.svn.repo
Run Code Online (Sandbox Code Playgroud) 有没有办法如何使用旧的时间/日期提交到SVN存储库或如何编辑提交后的时间/日期?
在我开始使用SVN之前,我有一些非常古老的存档源,现在我想将它们放入SVN,如果可能的话保存它们的原始日期,以便SVN历史记录与编辑文件的实际日期相匹配.
操作SVN服务器时间是一个显而易见的选择,但它不能在这里使用,因为SVN服务器不受我的控制.
我正在尝试将我的Wordpresss插件发布到他们分配给我的svn存储库中.我使用git(不是svn)所以我正在尝试使用git-svn但是当我尝试使用这些指令推送我的本地git repo时出现以下错误:
$ git svn dcommit
Committing to http://plugins.svn.wordpress.org/wp-github-pipeline/trunk ...
A .bowerrc
A composer.json
A composer.lock
...
A vendor/guzzle/guzzle
b3f5050cb6270c7a728a0b74ac2de50a262b3e02 doesn't exist in the repository at /usr/local/git/lib/perl5/site_perl/Git/SVN/Editor.pm line 401.
Failed to read object b3f5050cb6270c7a728a0b74ac2de50a262b3e02 at /usr/local/git/libexec/git-core/git-svn line 1011.
Run Code Online (Sandbox Code Playgroud)
我已经做了很多搜索(参见下面的"其他资源"),我理解这个问题通常是由子模块的结合使用引起的git svn.我确实有一个子模块,但我提交了文件,并.gitmodules使用git filter-branch 此处描述的删除,但问题仍然存在.所以我搜索了更多,似乎使用作曲家和/或凉亭可能会导致同样的问题.
我没有尝试vendor/从我的.gitignore中删除并承诺所有的第三方图书馆......我有预感可能有用,但即使这样做也不是一个可持续的长期解决方案.
有没有办法告诉git-svn忽略我的.gitignore并上传所有vendor/ files?.或者是否有另一种方法可以避免将所有依赖关系都归入回购?或者这是一个与我想的不同的问题?提前致谢!
更新1
我vendor/**从我的移除.gitignore并在我的本地存储库中提交了依赖项(但没有推送到源).但我得到了完全相同的错误!
更新2 我将所有文件复制到一个新目录,并尝试进行基本的svn提交.没有子模块.包括所有供应商/文件.我收到另一个错误:
$ svn ci -m 'Adding version 1.0 files'
Sending trunk/.gitignore
Adding …Run Code Online (Sandbox Code Playgroud) 是的我知道.你为什么要从Git迁移到SVN?
好吧,我碰巧遇到需要将巨大的Git仓库迁移到Subversion的情况!根据Edwin的评论,这是我尝试过的一个工作流程:
首先创建一个本地SVN repo:
svnadmin create svn_repo
接下来我看看我的Git回购:
git clone git:myNameSpace/myProject
cd进入myProject并运行:
git svn init -s --prefix=svn/ file:///home/myHome/svn_repo/myProject
git svn fetch
git rev-list --parents master | grep '^.\{40\}$' 查找根提交的哈希值,并且只提供一个提交.
接下来是获取空主干提交的哈希值:
git rev-parse svn/trunk
不幸的是,这个失败了:
fatal: ambiguous argument 'svn/trunk': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
好吧,我不能在这之后走多远....
我正在使用严格的签入策略在subversion存储库中处理项目,其中包括:每次提交到trunk都必须由另一个开发人员审核,这必须在提交消息中提及.
在使用git-svn时,我正在进行许多未经审核的增量git签到.他们的git commit消息反映了这一点.
使用git-svn但遵循svn存储库规则的最佳方法是什么?我应该将所有提交压缩成单个svn提交吗?我可以使用审阅者信息重写每个修订的提交消息吗?在执行git-svn dcommit之前,我可以"手动"将每个单独的更改移动到git master分支并修改每个更改的提交消息吗?
我被要求一个学校项目通过将其推送到现有的 SVN存储库来提交我的工作.它是一个现有的存储库,其中已有一些文件.我不需要这些文件或以前的提交.
我一直在使用git存储库处理我的任务.我想将我的工作推向SVN存储库而不会丢失任何历史记录.我怎样才能做到这一点?
我和我的团队伙伴正努力让我们的svn存储库与我们的git存储库保持同步.我们正在开发一个项目,我们被要求在svn存储库(由assembla.com网站托管)上共享我们的代码.由于我们习惯使用git对我们的代码进行版本控制,因此我们决定充分利用git提供的git svn功能.为了分享我们的所有工作并将其分成正确的分支,我们还有一个远程存储库用于git(bitbucket).
到目前为止,我们使用git承诺的所有工作都没有给我们带来任何问题,但是在错误出现后同步svn存储库错误.
我按照这个答案将现有的git存储库推送到SVN以将svn存储库连接到git,但是在几次合并和提交之后,我收到了错误,我无法再拒绝更改.
现在我有一个分支,它是svn/trunk的副本
$ git checkout -b assembla_copy -t svn/trunk
Branch assembla_copy set up to track local ref refs/remotes/svn/trunk.
Switched to a new branch 'assembla_copy'
$ git svn rebase svn/trunk
Current branch assembla_copy is up to date.
Run Code Online (Sandbox Code Playgroud)
要与我的主分支同步它我都试图
git merge master
Run Code Online (Sandbox Code Playgroud)
和
git rebase master
Run Code Online (Sandbox Code Playgroud)
但是,当git rebase master开始应用自第一次提交以来的所有更改并提供大量冲突时(当我已经在svn/trunk中进行了此更改时,因为在某种程度上我设法将一些更改推送到在线存储库;我们是(目前为r r46),git merge master顺利但是当我提交时,所有的更改都只在一个提交中总结,它表明"合并分支'主人'成为assembla_copy",而我宁愿它将所有单独的提交提交(就像它在开始时那样......).
如果我从主分支中提交,则所有提交都是分开的,但是主分支是重新分配的,因此所有具有主提交作为父分支的分支显示为与主分支分开的分支.
您能否向我解释一下正确的工作流程,以便拥有一个镜像git存储库的svn存储库,其中所有工作都已完成(svn只是一个副本)? 您是否可以使用标准的git命令而不是复杂的bash脚本,就像我在上周搜索解决方案时在一些答案中看到的那样?
谢谢!
我有一个现有的git存储库,我一直在努力.但是最近,我需要将提交推送到svn(不需要包含所有合并,但至少有一个线性主分支可以)
我不是很擅长git/svn,我只是一个普通的用户,使用SourceTree和CornerStone或者Tortoise,有很好的用户界面来做我的提交,分支和标记.我之前使用git-svn将svn repo迁移到git中,但从来没有反之亦然.
可能吗?我已经通过几个教程搜索,但没有一个工作.我也没有很好的与喜欢那些术语rebase,reflog等会很感激,如果有一些很好的指导来完成简单的事情,而不需要通过GIT中/ SVN的更复杂的部分学习.(简单,因为我猜必须有人面对同样的问题并且之前做过)
提前致谢!
我正在使用git进行源代码管理.出于某些原因,我必须使用VisualParadigm作为我的UML图.
不幸的是VisualParadigm只支持SVN.是否可以通过SVN连接到git存储库或远程存储库?