从 SVN 到 Git,找回丢失的历史

前段时间在将公司的 SVN 项目迁移到 Git 上面去,遇到一个很少见的问题: 有一个小伙伴使用 git-svn 做 rename 操作时候,将一个目录 svn mv 了, 导致新目录只存了最近几个月提交历史,丢失了历史信息。对团队开发而言, 历史提交是非常宝贵的财产,我们想了一些办法,把这些数据提取出来。 # 找出丢失之前的版本,列出丢失目录上层的操作记录。 svn log -l 2000 svn://log4d.com/trunk/apps/ios/ | less # 将重命名之前的版本拷贝到一个临时目录 svn copy svn://log4d.com/trunk/apps/ios/nami@43252 svn://log4d.com/trunk/apps/ios/nami_lost # 准备现有代码到 Git git svn clone svn://log4d.com/ -T trunk/apps/ios/nami -t tags -b branches -r 13532 nami # 修改 .git/config 来加入丢失的历史数据 Remote [svn-remote "svn-lost"] url = svn://log4d.com fetch = trunk/apps/ios/nami_lost:refs/remotes/trunk-lost # 并抓取 Remote 内容 git svn fetch # Rebase 新代码到恢复过来的历史记录上 git checkout master git rebase --committer-date-is-author-date trunk-lost 其中注意的是手动添加一个 svn-remote 地址为历史数据副本地址。 还有就是 rebase 时候参数 --committer-date-is-author-date 可以保证 rebase 不会造成提交时间被修改,方便回溯。 ...

2014-01-21 · alswl

Subclipse1.2.x的一个Bug

背景 在使用Eclipse开发项目,提交属性svn:ignore时候,SVN报出一个错误。 Failed to execute WebDAV PROPPATCH svn: Commit failed (details follow): svn: At least one property change failed; repository is unchanged 整整花了3个小时的时间在这上面纠缠,终于在某个邮件论坛找到一点点线索。 在[Re: Failed to execute WebDAV PROPPATCH](http://marc.info/?l=subversion- users&m=121478169326627&w=2)上面,有人提到Subclipse无法执行,但是Tortuial SVN没有问题 原因 我用的Subclispe还是07年在工作室时候安装的1.2.3版本,因为一直懒,所以没有更新。 ...

2010-03-20 · alswl

SubVersion建立多个版本库

由于刚接触SVN时间不长,当时建立版本库时候图方便,只建立了一个版本库。现在由于项目需要,需要建立多个版本库,这让我很头疼。经过一番摸索,终于知晓了如何在已 有单个版本库情况下面建立多个版本库。 一、单个库还是多个库? 原文链接:单个版本库还是多个? 作者:rocksun** 我前一个 blog中讨 论了版本库的布局,这个条目会尝试回答是选择单版本库单项目还是单版本库存放所有项目的问题,这里没有一个唯一的正确答案,但希望本 文可以帮助你理解代价,你才可以做出正确的决定来满足你的需求,下面是单版本库方法的优点: ...

2010-03-08 · alswl

TortoiseSVN中文版安装

虽然大部分情况下我都是用Subclipse连接SVN服务器,但是为了让整个团队在Delphi下使用上SVN,就需要使用SVN的客户端了,TortoiseSV N是目前比较流行的SVN客户端,目前最新版是1.6.7。 传送门之-[TortoiseSVN-1.6.7.18415-win32-svn-1.6.9.msi](http://downloads.sourceforg e.net/tortoisesvn/TortoiseSVN-1.6.7.18415-win32-svn-1.6.9.msi?download) 下面是一片TortoiseSVN中文版的安装方法,转载过来。 原文出处:TortoiseSVN 中文版 安装 -Svn中文网 ...

2010-03-05 · alswl

使用subclipse代理

公司网络必须使用代理,今天更新自己写的一个Utils到Google Project Host时候,出现无法打开SVN服务器的现象,我在浏览器测试了那几个目录,都没有问题,猜到是代理连接的问题。 Eclipse的代理设置在"General-Network Connections“中设置,很明显,Subclipse不在这里设定。 PS:在写的是一个DataBase->Java 3层代码生成器,想仿照动软.NET生成器那 样写,今天刚写完生成Bean的一些版本,自己计划在半年时间内写一个beta版。 ...

2010-03-03 · alswl

配置SVN服务端

实在忍受不了VSS了,下决心自己在虚拟机配置一个SVN服务器,然后再在服务器上安装一个SVN服务器端。以前都是使用现成的SVN服务器,或者使用Google Code提供的Project Host,今天就自己动手,丰衣足食吧。 话说VSS的确过时了,好多特性很麻烦,也难怪Louis嘲笑我Eclipse用VSS了~ 什么是SVN服务器 Subversion,简称SVN,是一个开放源代码的版本控制系统(SCM),相对于的RCS、CVS,采 用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。(via wiki) ...

2010-03-02 · alswl