亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

svn遷移至git

發布時間:2020-06-24 22:23:59 來源:網絡 閱讀:1236 作者:lylspecter 欄目:移動開發

svn 版本庫的遷移,只要svn 庫為標準目錄(trunk、branches、tags)按照git官方文檔基本都可以完成。

這里說說我所遷移的非標準目錄結構的svn 庫

svn 庫里有part1目錄,part1目錄下又分為:code、UI等等,對于這種非標準目錄結構,主干就是part1,沒有分支,沒有標簽。

而code下面又分為android、ios目錄,目錄內才分trunk、tags、branch,這種目錄層級結構……


對于以上非標準目錄結構,我采用的是先git svn到本地,并提交到git倉庫一個完整的版本,然后再將各目錄層級進行拆分為獨立標準目錄結構svn庫,然后再將各個庫git svn到本地,再提交到git庫。

說的可能有些繞,具體來操作下

全局假設:

原svn庫地址:file:///home/svn1/

拆分后的標準庫地址:file:///home/svn2/$svn/

原svn庫對應的git地址:https://git.example.com/dev/oldsvn.git

拆分后對應的git地址:git@git.example.com/dev/$svn.git


注:$svn以具體目錄或庫名命名

目錄結構:

part1:

    code:

        android:trunk、tags、branches

        ios:trunk、tags、branches

    UI


將原svn庫克隆到本地:

對于標準目錄結構含有其它自定義的目錄,也可采用此方式,只需將trunk設置為自定義的目錄名即可

git svn clone file:///home/svn/ \
--authors-flie=users.txt  --no-metadata --trunk=part1 oldsvn

選項含義:

    --authors-file: 指定svn和git用戶對應關系

    --no-metadata: 告訴 git svn 不要包括 Subversion 通常會導入的元數據

    --trunk: 主干名

注:這里沒有tags和branches所以不加 --tags --branch選項,也不用-s 選項代替。非標準目錄結構,實際存在什么就指定什么,不存在不指定。

        在clone過程中,可能會有含‘gc‘ 的提示,遇見則‘git gc --prune=now',然后'git svn fetch' 繼續clone

成功后,克隆的git 倉庫結構對應為:

    code:

        android:trunk、tags、branches

        ios:trunk、tags、branches

    UI

將此提交到git 倉庫,作為舊版本庫,便于查看原svn歷史提交修改。

git remote add origin https://git.example.com/dev/oldsvn.git
git push origin --all


對于多層級的目錄結構,如現在需要將part1:conde:ios 的庫遷移到git 上

首先,將ios 目錄拷貝到svn庫的根目錄,既與part1同級,目錄機構如下:

part1:

    code:

        android:trunk、tags、branches

        ios:trunk、tags、branches

    UI

android:trunk、tags、branches

ios:trunk、tags、branches

UI:


這樣在通過‘git svn clone‘ 的時候,就可以指定trunk為ios了

git svn clone file:///home/svn/ \
--authors-flie=users.txt  --no-metadata --trunk=ios --branch=branches --tags=tags ios


將標簽變為合適的 Git 標簽

$ cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
$ rm -Rf .git/refs/remotes/origin/tags

這會使原來在 remotes/origin/tags/ 里的遠程分支引用變成真正的(輕量)標簽。

接下來,將 refs/remotes 下剩余的引用移動為本地分支:

$ cp -Rf .git/refs/remotes/* .git/refs/heads/$ rm -Rf .git/refs/remotes

將你的新 Git 服務器添加為遠程倉庫并推送到上面

git remote add origin git@git.example.com/dev/ios.git
git branch -r
git push origin --all


在變更svn目錄的過程中可能會耗費很多時間,因此也可保持原svn目錄結構,進行克隆

git svn clone file:///home/svn/part1/code/android \
--authors-flie=users.txt  --no-metadata -T trunk -t tags -b branches android

使用此方式,可能會出現未知問題,我遇到的是

fatal: refs/remotes/trunk: not a valid SHA1

以上問題尚未解決

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑水县| 建平县| 陕西省| 龙海市| 平潭县| 罗城| 喀喇| 渝中区| 太保市| 新沂市| 乃东县| 龙井市| 兰溪市| 凤冈县| 绥阳县| 呼玛县| 广水市| 舞钢市| 调兵山市| 老河口市| 湾仔区| 宁化县| 普陀区| 桑植县| 衡南县| 江西省| 齐河县| 建宁县| 睢宁县| 固安县| 黄大仙区| 美姑县| 衡东县| 黄梅县| 寿宁县| 大田县| 区。| 蒙城县| 元朗区| 鄂州市| 枣强县|