国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

SVN遷移到git

2019-11-09 16:49:02
字體:
供稿:網(wǎng)友

前言

       目前同步開發(fā)有好幾個項目,有的采用svn管理,有的采用git管理,一想也知道svn管理的項目都比較老,每次切換工程開發(fā)都要改變提交代碼的方式。因此就打算把svn管理的項目遷移到git上,其實前面說的都不是重點,重點是svn服務(wù)器有時不穩(wěn)定,所以才打算遷移到git上。

遷移過程

       說干就干,問題是之前都沒有遷移過啊!這都難不倒我,有萬能的google,隨便搜索關(guān)鍵字svn遷移到git,隨便出來都是一大堆文章,看起來確實沒有幾步,那就開干吧!

clone代碼

       很多文章上來第一步就是:

git svn clone https://xxxxx/xxxxxx/trunk/android/PRoject1 --no-metadata --authors-file=userinfo.txt --trunk=trunkprojectname

       wtf? 這是啥!后面的參數(shù)都是些啥?不得已又翻下一遍找到了上面的參數(shù)的解釋:

–no-metadata: 就是拉取的時候,不需要拉取svn的metadata信息,這樣可以保證提交到git項目比較干凈 –authors-file=userinfo.txt: 表示提交的作者映射,將svn中提交記錄的作者都映射到新的名字 –trunk=trunkprojectname:表示svn上trunk分支,后面是trunk分支的名稱

作者映射

       這里我們首先創(chuàng)建一個txt文檔來映射所有的提交者, 格式如下:

loginname = Joe User <user@example.com>

       如果有多個,那就多行,不需要符號換行:

loginname = Joe User <user@example.com>loginname1 = Jone User <guest@example.com>

       將所有的提交者都做一次映射。那我們接著clone代碼吧!

–trunk

       作者映射創(chuàng)建好了,但是–trunk這個又怎么寫?

       svn是采用trunk,branches,tags來管理代碼的, 如果你的項目是完全按照trunk,branches,tags來管理的,遷移的命令可以寫作如下:

git svn clone https://xxxxx/xxxxxx/ --no-metadata --authors-file=userinfo.txt --trunk=trunkname --branches=branches --tags=tags

       也可以寫作如下:

git svn clone https://xxxxx/xxxxxx/ --no-metadata --authors-file=userinfo.txt -s

這里的-s就相當(dāng)于上面三個參數(shù)的組合,還可以寫成–stdlayout

       但是我clone的地址只需要遷移其中一個項目,況且我trunk下面還有好幾個項目,類似如下:

https://xxxxx/xxxxxx/trunk/android/project1https://xxxxx/xxxxxx/trunk/android/project2

       我只需要遷移其中的project1,這里完全不符合–trunk=trunkprojectname,這種情況又怎么辦?我是加這參數(shù)還是不加這個參數(shù)?實踐是檢驗真理的唯一方式,兩種情況我都嘗試一次,首先輸入如下的命令:

git svn clone https://xxxxx/xxxxxx/trunk/android/project1 --no-metadata --no-minimize-url --authors-file=userinfo.txt --trunk=project1 demo

       這里的demo是項目遷移下來本地文件夾名稱,開始clone輸出如下:

Initialized empty Git repository in /Users/doc/Test/Demo/.git/Using higher level of URL: https://xxxxxxx/branch/android/project1 => https://xxxxxxxx/branch/androidW: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/xxxxxxbranch/android' path not foundW: Do not be alarmed at the above message git-svn is just searching aggressively for old history.This may take a while on large repositories^Cecked through r290000

       等待許久,執(zhí)行完畢,去本地Demo文件夾一看啥都沒有,妥妥的失敗了,這里主要出現(xiàn)了兩個錯誤第一個是默認(rèn)使用了更高level的url,但是我并不想從更高的url來遷移,第二是輸出This may take a while on large repositories,最終結(jié)果就是失敗了。

       我們先來解決第一個問題:

Using higher level of URL: https://xxxxxxx/branch/android/project1 => https://xxxxxxxx/branch/android

       可以在命令行加入--no-minimize-url,主要是不縮小輸入的地址,加入該命令后我們繼續(xù)clone,輸入的命令變成了如下:

git svn clone https://xxxxx/xxxxxx/trunk/android/project1 --no-metadata --no-minimize-url --authors-file=userinfo.txt --no-minimize-url --trunk=project1 demo

       加入?yún)?shù)后,不會才出現(xiàn)Using higer level of URL的錯誤了,根據(jù)提交記錄的多少,這個等待時間可能是不確定的,經(jīng)過良久的等待之后,成功的出現(xiàn)了如下錯誤:

Initialized empty Git repository in /Users/doc/Test/Demo/.git/W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/xxxxx/branch/android/dev_tv' path not foundW: Do not be alarmed at the above message git-svn is just searching aggressively for old history.This may take a while on large repositoriesURL access forbidden for unknown reason: Access to '/xxxxxx/default' forbidden at /applications/Xcode.app/Contents/Developer/usr/share/git-core/perl/Git/SVN.pm line 179.

       既然加了trunk參數(shù)不行,那這里就不加這個參數(shù),命令如下:

git svn clone https://xxxxx/xxxxxx/trunk/android/project1 --no-metadata --no-minimize-url --authors-file=userinfo.txt --no-minimize-url demo

       再一次長久的等待,真正的是好事多磨,這次終于成功了。其實在這之間還出現(xiàn)了一次錯誤,就是代碼在clone的時候,當(dāng)遷移到某一初時,出現(xiàn)了name that does not exist in the authors-files,這是是因為userinfo中未列全所有提交者。

push

       代碼已經(jīng)clone到本地了,那之后就是push到git上去了。至于怎么在上創(chuàng)建項目啥的,這里就不在贅述了,假設(shè)這里已經(jīng)有給一個遠(yuǎn)程庫地址了,地址如下:

https://github.com/FreeSunny/TvSample.git

       有了遠(yuǎn)程庫地址,我們就可以將本地的工程push到遠(yuǎn)程地址,命令如下:

git remote add origin https://github.com/FreeSunny/TvSample.git

       關(guān)聯(lián)了地址后,最后一步就是將代碼給push上去:

git push -u origin master

       之后你刷新git,會發(fā)現(xiàn)已經(jīng)有了工程,不過在我這又出現(xiàn)了一次幺蛾子,怎么刷都沒有,提交日志顯示已經(jīng)成功,wtf,最后我手動改了一個文件,在提交一次,才將所有東西刷出來。

附錄

       這里是一個Android項目,采用as打開后,在編譯會出現(xiàn)很多額外的文件,我們怎么才能將這些不必要的文件提交到遠(yuǎn)程吶?手動添加.gitignore文件,將要排除的文件都列入到.gitignore中。

后記

       看別人文章本來是想抄一個近道,但是花的時間更長,每個項目管理的方式不一樣,所以不是每個方法都通用,只是可氣的是,網(wǎng)上每篇文字都大同小異,難道他們的管理方式都一模一樣!!

       我去搜索官方文檔,苦心人天不負(fù),官方文檔才是正道。

       官方文檔地址

       文章中地址都用xxx來替代了。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长子县| 榕江县| 昌宁县| 苍梧县| 仁化县| 伽师县| 高密市| 金华市| 沅江市| 东至县| 美姑县| 七台河市| 墨竹工卡县| 苍山县| 大渡口区| 镇宁| 南涧| 图木舒克市| 赣州市| 松江区| 榆树市| 仁化县| 镶黄旗| 侯马市| 阜宁县| 凤城市| 乌海市| 浠水县| 疏勒县| 浦东新区| 萨迦县| 深泽县| 玉林市| 博乐市| 法库县| 大余县| 德惠市| 六枝特区| 红河县| 兴仁县| 樟树市|