Closed7

パッケージ引っ越し大作戦

やっこさん、ついに始めちまったよ…

nyaosorg という organization を作って、そちらへ nyagos のレポジトリを引っ越しました。nyagos が依存するパッケージも順次そちらへ移動する予定です

https://twitter.com/NyaosOrg/status/1436892273489301506

go-readline-ny も nyaosorg/ へ引っ越しました。新URLでの import を有効にするため v0.5.0 のバージョンタグを打ちましたが、機能は特に変更ありません
(これ、新タグを打たないと、go.mod 関係でエラーになるみたいです)

https://twitter.com/NyaosOrg/status/1436919949713235972

import 文の zetamatta/hogehoge を nyaosorg/hogehoge へ全部置換するバッチファイル。Perl は -i オプションで、ファイルの書き換えができるので便利。ただし、Windows版だと改行コードが CRLF になってしまうので、安直に go fmt で元に戻す(これ Perl 側でなんとかできそうなもんだけどね)

set "TARGET=go-windows-mbcs"
for /R %%I in (*.go) do perl -i -p -e "s|github.com/zetamatta/%TARGET%|github.com/nyaosorg/%TARGET%|g" %%I & go fmt %%I

昨日、だいぶとやった。残りはあと6つ

  • go-findfile
  • go-inline-animation
  • go-windows-consoleicon
  • go-windows-dbg
  • go-windows-su
  • go-importconst

洗い出しは:
seek zetamatta **/*.go | goawk "{ t[$NF]++ } END{ for(i in t){ print i }}" | sort
でやった。

以下、GitHub の機能でレポジトリの譲渡を行った場合の話

  • レポジトリを実際に引っ越ししても、GitHub 自身は旧URLを新URLへリダイレクトしてくれるので、既存の import の参照が切れることはない
  • 逆に新URLへのアクセスは go.mod に記述されている URL と、実際の URL がズレるので、すぐできない
  • 以下の go.mod の修正を行うことで、新URLで import できるようになる
    • go.mod の修正: module github.com/zetamatta/XXXXXmodule github.com/nyaosorg/XXXXX
    • テストコードやサンプルコード、サブパッケージなどで、自分自身のパッケージ名を参照している import 文を修正する
    • go.mod を修正した後に、新しいURL版のタグを打つ
    • 以上を行うと、旧URLの時にセマンティックバージョニングによるタグが打たれていない場合、旧URLで import できなくなるので注意。おそらく、タグは後から打つことも一応できるが、その隙間をちゃんと作っておく必要あり

消化状況:

  • go-findfile (go-windows-findfile とリネーム)
  • go-inline-animation
  • go-windows-consoleicon
  • go-windows-dbg
  • go-windows-su
  • go-importconst

置換バッチファイル(toNYAOSORG.cmd )を改良

  • findstr でヒットしたファイルだけを処理することでスピードアップ
  • 置換するレポジトリをパラメータ化(例 toNYAOSORG.cmd go-windows-su
setlocal
set "TARGET=%~1"
for /F %%I in ('findstr /S /M "%TARGET%" *.go') do perl -i -p -e "s|github.com/zetamatta/%TARGET%|github.com/nyaosorg/%TARGET%|g" %%I & go fmt %%I
endlocal
exit /b

nyagos から import されてるパッケージの引っ越し完了!

16レポジトリに分割・分散していたとは…作った自分もびっくり!

このスクラップは2021/09/14にクローズされました
ログインするとコメントできます