BacklogからGitbucketへWikiを移行する
前提
- Gitbucket 4.2
- nodejs
概要
結婚を決めてから結婚関連の色々を夫婦で管理するのにBacklogを使っていた。
最初こそチケット管理!とかバージョン管理!とか息巻いていたものの、非エンジニアの妻にそこまで求めるのは現実的じゃないので、結局Wikiだけを使っていた。
その後、結婚式関連やハネムーン関係で大変役立てたあと放置してました。
長らくログインもせずBacklogの運用の変化を追えるとも限らないので、自前のGitbucketへデータをコピーしておきたいと考えました。
Gitbucket
GitHubクローンを目指して作られているOSSで、デブロイが大変簡単。
自前のサーバでNginx/Jetty/PostgreSQLで運用中。
ここにmarrige
プロジェクトを作成して、そのWikiにデータを移す。
GitbucketのWikiをローカルへコピー
GitbucketのWikiはGitで管理されているので、git clone
して編集できる。
Wikiのどこのページにも右下に Clone this wiki locally があるので、ここからURLを取得する。
端末を立ち上げ、Wikiリポジトリをgit clone
する。
~$ git clone ssh://[email protected]:99999/toming/marriage.wiki.git
Cloning into 'marriage.wiki'...
remote: Counting objects: 3, done
remote: Finding sources: 100% (3/3)
remote: Getting sizes: 100% (2/2)
remote: Compressing objects: 100% (65/65)
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), 238 bytes | 0 bytes/s, done.
Checking connectivity... done.
~$
BacklogのAPIキー取得
Backlog APIを使用してデータを取得するので、APIキーを取得する必要がある。
Backlogにログイン後、“個人設定”->“API”と進んで”メモ”に名前を設定して”登録”すると下記の通りAPIキーが作成される。
このキーをコピーしておき、以降のBacklogアクセスでURLに設定する。
Backlog API
使用するBacklog APIは下記2つ。
ファイル名制約
GitbucketではGitリポジトリにページを保存し、ファイル名をタイトルとしているため、ファイル名として使用できる文字の制約をそのまま受ける。 Gitbucketのソース上はおそらくここでバリデーションしている?
制約をまとめると以下の通りとなる。
\ / : * ? " < > |
のいずれかの文字を含む_ -
のいずれかの文字で開始している_Sidebar
,_Footer
のいずれかと一致する
後述するGistでは特定文字を含むパターンのみ変換し対応している。
Wikiページ取得からファイル保存まで
端的には環境変数を設定して下記Gistを実行することでBacklog用のファイル出力ができる。
実行時の記録
~/marriage.wiki$ export backlog_space=hoge
~/marriage.wiki$ export backlog_project=Hoge
~/marriage.wiki$ export backlog_apikey=hogeHOGEhogeHOGEhogeHOGEhogeHOGEhogeHOGE
~/marriage.wiki$ nodejs BacklogWikiToGitbucket.js
Save wiki: BGM.md
Save wiki: BGM(挙式&披露宴).md
Save wiki: Home.md
〜〜〜中略〜〜〜
~/marriage.wiki$
GitリポジトリにコミットしGitbucketへpush
~/marriage.wiki$ git add .
~/marriage.wiki$ git commit -m "BacklogWiki移行!!"
git commit -m "BacklogWiki移行git add ."
[master 41149d7] BacklogWiki移行git add .
61 files changed, 4307 insertions(+), 1 deletion(-)
create mode 100644 "BGM(\346\214\231\345\274\217\357\274\206\346\212\253\351\234\262\345\256\264).md"
create mode 100644 BGM.md
rewrite Home.md (100%)
〜〜〜中略〜〜〜
~/marriage.wiki$ git push origin master
Counting objects: 72, done.
Delta compression using up to 6 threads.
Compressing objects: 100% (72/72), done.
Writing objects: 100% (72/72), 120.84 KiB | 0 bytes/s, done.
Total 72 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2)
remote: Updating references: 100% (1/1)
To ssh://[email protected]:99999/toming/marriage.wiki.git
d402783..41149d7 master -> master
~/marriage.wiki$
記法の違いに関しては目的のWikiで使用している部分に関してはなんとなく変換を行っているが、各ページ見て修正は必要だろう。 いちいち1ページずつやるよりは楽にできた。