`
crazycode
  • 浏览: 153596 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

git-svn使用方式及使用中的问题(已解决)

阅读更多
之前的项目都是使用SVN,今天在git-svn上工作时,出了一点问题,记录一下,以便将来查询。
使用过程:
1、从svn clone出项目,加上-s参数以标记识别svn标准的目录分支结构,同时通过show-ignore设置git库的exclude属性:
git svn clone -s https://svn.xxx.com/svn/xxx
git svn show-ignore >> .git/info/exclude


2、建立本地工作分支,开始工作:
git checkout -b work

修改内容直接commit,加上-a开头以省略git add操作:
git commit -a


3、提交回svn的过程:
git checkout master
git merge work
git svn rebase
git svn dcommit


在今天工作中,我提交回svn的方式是:
git checkout master
git svn rebase
git merge work

结果svn rebase时在master分支上产生了一个新的node,这样merge时就不能快速合并,出现了冲突,修复后,在dcommit时出错,出现N个孤立节点。因为不熟悉,就checkout出work分支,进行了dcommit,然后重新生成一次git库。

(7/14更新)

今天解决了这个问题,参考以下网址:https://wiki.bnl.gov/dayabay/index.php?title=Synchronizing_Repositories
以下重新描述一下问题和解决方法:
1、在执行git svn dcommit时,出现如下错误:
Committing to https://svn.xxx.com/svn/projects/trunk ...
提交时发生合并冲突: 您的文件或目录”test/functional/xxx_controller_test.rb“可能已经过时: The version resource does not correspond to the resource within the transaction.  Either the requested version resource is out of date (needs to be updated), or the requested version resource is newer than the transaction root (restart the commit). at /usr/bin/git-svn line 450

2、这时,重新执行以下步骤即可:
git svn fetch
git svn rebase
git svn dcommit

但我在执行git svn rebase时,又出现冲突,这个时候,只需要手工合并掉冲突,并重新add一下:
git add .

然后,再执行:
git rebase --continue

如果报告说没有修改内容,则换成执行:
git rebase --skip

完成rebase过程,这时就可以git svn dcommit了。

这样,总算解决了svn历史冲突问题,不用象前面那样笨笨的重新git-svn clone.
分享到:
评论
1 楼 crazycode 2008-07-21  
发现出现冲突的另一个可能的原因。
当时提交时,我开着EMACS,可能出现文件锁掉的情况,导致一直git rebase --continue不成功,关掉emacs后,成功完成rebase过程。

相关推荐

    git-svn使用用法

    在使用git-svn时,可能会遇到Windows平台下的中文乱码问题,通过配置git-completion.bash、profile和gitconfig文件,可以解决ls命令、git log显示及提交时的中文编码问题。 在版本控制守则方面,应该避免提交垃圾...

    rh-git218-git-svn-2.18.2-1.el7.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    git-as-svn.zip

    git-as-svn 是 Git 仓库的 SVN 前端,你可以使用 SVN 协议来访问 Git 仓库 标签:gitassvn

    git-svn-1.8.3.1-23.el7_8.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    Git-SVN面试题,都是来自工作中的笔记

    2. **使用命令解决冲突**:除了手动解决外,还可以使用Git命令来辅助处理冲突。例如,`git merge --abort` 可以取消正在进行的合并操作。 ### 撤销操作 撤销操作是Git中非常重要的一项功能,可以帮助开发者在误...

    dvcs-ripper-master-git-svn-cvs.zip

    dvcs-ripper-master-git-svn-cvs

    git-svn-helpers:使 git-svn 变得简单的命令行工具

    git-svn-helpers 是一个命令行工具的集合,它极大地简化了 git for svn 存储库的使用。 它的主要目标是在现有的 svn checkout 之后设置一个本地 git 存储库,“无需动脑筋”。 它还解决了使用单个 git-svn 存储库...

    svn类型的git工具64位

    具体到描述中提到的"svn版本控制工具",这可能是指像`git-svn`这样的工具,它是一个Git子命令,允许用户在本地使用Git的同时与远程的SVN服务器进行通信。通过`git-svn`,开发者可以将Git的分支管理和本地版本控制...

    基于C语言和Shell脚本的码云git-svn-fast-import改进设计源码

    本项目为码云git-svn-fast-import工具的改进设计源码,采用C语言进行核心开发,同时包含Shell脚本和Python辅助脚本,总计39个文件,其中C源文件13个,头文件10个,Shell脚本6个。此外,还包含构建配置文件、版本控制...

    git svn转换工具

    svn+git实现离线提交并且不需要到处所有svn版本,速度超快非一般的感觉,超越git本身的git2svn功能。 使用本工具需要安装基础工具: 首先安装git msysgit:https://code.google.com/p/msysgit/downloads/list msysgit...

    git_svn.rar

    Git 和 SVN 是两种广泛使用的版本控制系统,它们在软件开发中起着至关重要的作用,帮助团队协同工作并跟踪代码的历史变化。Git 是一个分布式版本控制系统,而 SVN(Subversion)是集中式版本控制系统。以下是关于 ...

    rh-git218-git-svn-2.18.4-1.el7.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    git和svn学习入门教程

    Git和Subversion(SVN)都是版本控制系统,用于跟踪和管理软件开发中的代码变更。它们在代码管理和协作方面发挥着至关重要的作用。本教程将帮助初学者了解这两者的基础知识,以便选择适合自己的工具。 首先,让我们...

    git和svn.zip

    在安装过程中,"TortoiseSVN-1.11.0.28416-x64-svn-1.11.0.msi" 文件是 TortoiseSVN 的安装程序,用于在 Windows 64 位系统上安装 SVN 客户端。"TortoiseGit-2.8.0.0-64bit.msi" 文件则是 TortoiseGit 的安装程序,...

    Git-2.25.1-64-bit.rar

    4. **SVN支持**:Git可以与Subversion(SVN)服务器进行交互,这对于那些使用SVN但希望尝试Git的团队来说是一大优势。标签中提到的"git svn"表示Git具有与Subversion集成的功能。 5. **命令行工具和图形界面**:Git...

    git 、svn 代码版本管理工具所有合集.7z

    在软件开发过程中,版本...Sourcetree 适用于 Git 用户,而 TortoiseSVN 和 TortoiseGit 则为 SVN 和 Git 用户提供了直观的 Windows 环境下的操作方式。了解并熟练掌握这些工具,能极大地提升开发效率和团队协作能力。

    擅用Git弥补SVN的不足

    综上所述,通过配置git-svn、git、svn、github,可以构建一个强大的开发环境,实现SVN和Git的无缝结合,有效弥补SVN在使用中的不足。在具体的工作流程中,如需以SVN库为基础进行开发,可以先克隆SVN库到本地Git库,...

    git离线安装包(包含所有依赖包)git-1.8.3.1-32.el7-8x86-64,linux离线安装git安装包含所有依赖

    尽管现在Git已经更新到了更高版本,但旧版本仍然可能在某些特定环境中使用,因为它们可能与系统的其他组件兼容,或者是为了满足特定项目的需求。 在Linux环境下安装Git,通常需要解决各种依赖问题。这个离线安装包...

    Git2.11.1+SVNGit2.4.0.zip

    Git-2.11.1-64-bit 和 TortoiseGit-2.4.0.0-64bit,适用于使用Git有服务器仓库,把写好代码放入Git仓库,使用SVNGit上传更新等,使用Git仓库的好处就在于,你在家里也是可以上传更新的,只要账号密码正确就可以了,...

    linux系统安装git及git常用命令

    1 安装GIT 代码如下:$ sudo aptitude install git$ sudo aptitude install git-doc git-svn git-email git-gui gitk git软件包包含了大部分Git命令,是必装的软件包,第二行命令也是Git软件包,但是是单独发布的,...

Global site tag (gtag.js) - Google Analytics