母艦(という言い方もあまりしなくなってきたみたいですが)を切り替えるのにあわせて、これまでのメイン PC でやってきた各種設定や Python スクリプトをコピーして使おうとしたのですが、環境が違うと手直しも必要になってきます。
これまではバージョン管理はメイン PC の、たとえば c:\Apps\bin にリポジトリを作って、そこにコミットしたりしてたのですが、新規の PC で手直ししたりするとその変更をメイン側に反映するのも結構手間です。さらに、その結果としてメイン側でちょこっと変えて、それを新規側に戻して、とかになってくると、やっぱりリポジトリはサーバにおいたほうがいいかな、と。ちょー今更ですが。
実はかなり前になりますが Bitbucket にアカウントを作って、そちらをリポジトリにしようかなとしていたことがあります。なんだかんだでちょっとお試しでいじって放置してました。ところが Bitbucket は2010年に Atlassian に買収され、2020年6月で Mercurial のすべてのサポートを終了し、Mercurial リポジトリを削除し、Git のみにするということになっていたようです。そしてアカウントもいつのまにか Atlassian に移行していました。
一方、実は GitHub にもアカウントを作っていまして、こちらのほうはちょっとだけ使ったのですがやっぱり放置していました。Mercurial のローカルリポジトリで当面の用は足りていたのと、Python をメインで使うんだから VCS も Python 系の Mercurial がいいし、むしろ Git のみのために Perl をインストールするのがなんとなく嫌だったりしたもので。
といいつつ、やっぱり Visual Studio は Git を組み込んでそのまま VCS が使えたり、VSCode も Git リポジトリを見に行ったり、兎にも角にも Git がないと始まらない世の中になってきていたりするので、そろそろ Mercurial じゃなきゃ嫌だ!みたいなことやってると面倒だったりするんだろうなということで、すぱっと Git に切り替えて、リポジトリも GitHub を利用させてもらえばいろいろスッキリするじゃん、と。
ということで、移行することにしたのですが、たぶんステップとしては2つ。
- ローカルの hg リポジトリを git リポジトリに変換
- ローカルの git リポジトリを GitHub にインポート
ローカルの hg リポジトリを git リポジトリに変換
$ git clone http://repo.or.cz/r/fast-export.git /Apps/fast-export
$ pacman -S python mercurial
$ cd /Apps/bin
$ hg log | grep user: | sort | uniq | sed 's/user: *//' > ../authors
bob=Bob Jones <bob@company.com>
$ cd /c/Apps
$ git init converted
$ cd converted
$ ../fast-export/hg-fast-export.sh -r ../bin -A ../authors
/c/Apps/converted% ../fast-export/hg-fast-export.sh -r ../bin -A ../authors Error: The option core.ignoreCase is set to true in the git repository. This will produce empty changesets for renames that just change the case of the file name. Use --force to skip this check or change the option with git config core.ignoreCase false /c/Apps/converted%
/c/Apps/converted% git config core.ignoreCase false
/c/Apps/converted% ../fast-export/hg-fast-export.sh -r ../bin -A ../authors Invalid file format in [../authors], line 1 Loaded 0 authors master: Exporting full revision 1/144 with 32/0/0 added/changed/removed files master: Exporting simple delta revision 2/144 with 0/1/0 added/changed/removed files master: Exporting simple delta revision 3/144 with 0/1/0 added/changed/removed files [...] master: Exporting simple delta revision 143/144 with 0/2/0 added/changed/removed files master: Exporting simple delta revision 144/144 with 0/2/0 added/changed/removed files Issued 144 commands fast-import statistics: --------------------------------------------------------------------- Alloc'd objects: 5000 Total objects: 490 ( 0 duplicates ) blobs : 202 ( 0 duplicates 160 deltas of 200 attempts) trees : 144 ( 0 duplicates 141 deltas of 141 attempts) commits: 144 ( 0 duplicates 0 deltas of 0 attempts) tags : 0 ( 0 duplicates 0 deltas of 0 attempts) Total branches: 1 ( 1 loads ) marks: 1024 ( 144 unique ) atoms: 45 Memory total: 2493 KiB pools: 2141 KiB objects: 351 KiB --------------------------------------------------------------------- pack_report: getpagesize() = 65536 pack_report: core.packedGitWindowSize = 1073741824 pack_report: core.packedGitLimit = 35184372088832 pack_report: pack_used_ctr = 2 pack_report: pack_mmap_calls = 1 pack_report: pack_open_windows = 1 / 1 pack_report: pack_mapped = 277981 / 277981 ---------------------------------------------------------------------
[extensions] hgext.convert=
を追加します。そして、
/c/Apps/bin% hg convert --authors ../authors . ../bak initializing destination ../bak repository scanning source... sorting... converting... 143 initial import [...] writing author map file C:\Apps\bak\.hg\authormap /c/Apps/bin%
/c/Apps% rm -rf converted /c/Apps% git init converted hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: hint: hint: git config --global init.defaultBranch <name> hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: hint: hint: git branch -m <name> Initialized empty Git repository in /c/Apps/converted/.git/ /c/Apps% cd converted /c/Apps/converted% git config core.ignoreCase false /c/Apps/converted% ../fast-export/hg-fast-export.sh -r ../bak master: Exporting full revision 1/144 with 32/0/0 added/changed/removed files master: Exporting simple delta revision 2/144 with 0/1/0 added/changed/removed files master: Exporting simple delta revision 3/144 with 0/1/0 added/changed/removed files master: Exporting simple delta revision 4/144 with 1/0/0 added/changed/removed files master: Exporting simple delta revision 5/144 with 0/1/0 added/changed/removed files [...] master: Exporting simple delta revision 144/144 with 1/2/1 added/changed/removed files Issued 144 commands fast-import statistics: --------------------------------------------------------------------- Alloc'd objects: 5000 Total objects: 490 ( 1 duplicates ) blobs : 202 ( 1 duplicates 160 deltas of 200 attempts) trees : 144 ( 0 duplicates 141 deltas of 141 attempts) commits: 144 ( 0 duplicates 0 deltas of 0 attempts) tags : 0 ( 0 duplicates 0 deltas of 0 attempts) Total branches: 1 ( 1 loads ) marks: 1024 ( 144 unique ) atoms: 46 Memory total: 2493 KiB pools: 2141 KiB objects: 351 KiB --------------------------------------------------------------------- pack_report: getpagesize() = 65536 pack_report: core.packedGitWindowSize = 1073741824 pack_report: core.packedGitLimit = 35184372088832 pack_report: pack_used_ctr = 2 pack_report: pack_mmap_calls = 1 pack_report: pack_open_windows = 1 / 1 pack_report: pack_mapped = 278859 / 278859 --------------------------------------------------------------------- /c/Apps/converted% git shortlog -sn 144 Chiyosuke Fujii /c/Apps/converted%
$ git remote add origin git@my-git-server:myrepository.git
$ git push origin --all
0 件のコメント:
コメントを投稿