GitLabに移行したSVN

SVNの提出記録を保持するように要求する

1.アカウント対応

  • SVNのログレコード:
r2 | lisi | 2014-12-12 15:11:59 +0800 (五, 12 12月 2014) | 1 line

ssss

  • gitログレコード:
Author: zhangsan <[email protected]>
Date:   Thu Jan 16 11:28:30 2020 +0800

    初始化意见反馈模块

commit 938ef83245f699c5c016b98ce454cffba3ce8eff

svnとgitのログレコードを比較すると、svnはアカウントのみを使用して送信レコードを表示し、gitはアカウントを使用するだけでなく、メールボックスを使用して確認していることがわかります。したがって、svnからgitへの移行では、それに応じて2つを変換する必要があります。

その方法は、svnアカウントをエクスポートしてから、svnアカウントを等号の左側にあるsvnアカウントに変換し、GitLabアカウントと等号の右側にあるメールボックス情報に変換します。zhangsan=zhangsan <[email protected]>このような情報はファイルに記録されます。 1行。ログ情報にのみ焦点を当てているため、ログレコードのアカウントのみをエクスポートし、これらのアカウントを操作します。次のコマンドは、アカウント通信のエクスポートを完了します。

svn log SVN项目的url -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2"="$2" <"$2"@example.com>"}' | sort -u > 记录账号对应关系的文件路径

以下では、アカウントの対応をファイルsvn2git.txtにエクスポートします。

~/Desktop$ svn log http://10.69.10.15:8080/svn/ai_project | awk -F '|' '/^r/ { sub(" ","",$2); sub(" $","",$2); print $2"="$2" <"$2"@example.com>"}' | sort -u > svn2gitlab.txt

コマンドの説明:

  • http://10.69.10.15:8080/svn/ai_project:svnログのエクスポート
  • エクスポートされたログは、パイプライン '|'を介してawkコマンドに渡されます
  • awkの処理単位は1行であるため、awkはデータの各行を「|」で除算し、結果の2番目の項目はアカウント名です。Subはアカウント名からスペースと$記号を削除し、最終的にアカウント番号を出力します。アカウント番号は、並べ替えのためにパイプライン「|」を介してsortコマンドに渡され、最終的に結果はファイルsvn2gitlab.txtに保存されます

2.git-svn pull SVNプロジェクト

git-svnを使用してSVNプロジェクトをプルします。

  • git - SVNをダウンロードしてインストールし、次のことができhttp://fr2.rpmfind.net/linux/rpm2html/search.phpのgit - SVNを検索し、ダウンロードして、彼らのプラットフォームに応じてインストールすることを選択。もちろん、ubuntuが使用できるように、ソースを使用してインストールすることもできます:sudo apt-get install git-svn

  • コマンドを実行しgit svn clone "SVN项目url" --no-metadata --authors-file="账号对应关系文件" 自定义项目名、プロジェクトをプルし、アカウント通信ファイルを使用してsvn提出レコードをgit提出レコードに変換します。

    通常のsvnチェックアウト:

    ~/Desktop/H/ai_project$ ls -a
    .   app           gradle   local.properties  key.sign     proguard-project.txt  .svn
    ..  build.gradle  .gradle  main.iml          pda_svn.iml  settings.gradle
    
    

    git svnを使用してプルします。

    ~/Desktop/TestSVN2Git/ai_project$ ls -a
    .   app           .git    .gradle           main.iml  pda_svn.iml           settings.gradle
    ..  build.gradle  gradle  local.properties  key.sign  proguard-project.txt
    

    上記の比較からわかるように、に.svn変換されます.git

例:

~/Desktop/TestSVN2Git$ git svn clone http://10.69.10.15:8080/svn/ai_project --no-metadata --authors-file=../svn2gitlab.txt ai_project

3.プロジェクトをGitLabに送信します

Git-svnでプルされたプロジェクトディレクトリに切り替えます。

  • プロジェクトのユーザー情報を構成する
 git config --local user.name "GitLab用户名"
 git config --local user.email "GitLab邮箱"

など:

~/Desktop/TestSVN2Git/ai_project$ git config --local user.name "Administrator"
~/Desktop/TestSVN2Git/ai_project$ git config --local user.email "[email protected]"
  • GitLab Webページで作成するか、GitLab APIを使用して空のウェアハウスを作成します。「ローカルgitウェアハウスからリモートgitウェアハウスへの移行」を参照してください

    最後に、空の倉庫のgitアドレスを取得します。http://10.69.10.13/android/aiproject.git

  • ローカル倉庫を新しいリモート倉庫に関連付けるgit remote add origin GitLab项目的git地址

    ~/Desktop/TestSVN2Git/ai_project$ git remote add origin http://10.69.10.13/android/aiproject.git
    
  • プッシュリモコンgit push -u origin master

    ~/Desktop/TestSVN2Git/ai_project$ git push -u origin master
    

3番目のステップでの完了は、ローカルgitリポジトリをリモートgitリポジトリ移行する際の問題です

追記:

svnがgitを移行するとき、大まかに言うと、git svnはプロジェクトをプルするときにアカウント対応ファイルを使用してsvn提出レコードをgit提出レコードにプルし、それを新しいプロジェクトにプッシュします。

381の元の記事を公開 85を賞賛 80,000ビュー+

おすすめ

転載: blog.csdn.net/weixin_40763897/article/details/105589263