Nikushi's blog Our Time is Limited.

OctopressのソースリポジトリをDropboxに変更

OctopressのソースコードをDropboxに変更した。

octopressのソースファイルの管理

Deploying to Github Pagesの手順でgithub pagesを使うと、localのworking copyにはsourceというブランチが生成されています。blogを書くときは以下のワークフローになるようです。

  1. rake new_post['hoge']で記事を作成
  2. rake deployで記事を公開
  3. git pushにてlocalのsourceブランチをgithub.comにpush(sourceファイルのバックアップ)

git pushしてupstreamにpushするとgithub上に全部公開されますが、個人的にはソースファイルは公開しなくてよいなと考えました。plugin作って見せたりするシーンでは便利ですが今のところgistを使えば十分なので。

そこでgit pushする先のリポジトリをgithub.comからDropboxに作成したリモートリポジトリに変更してみます。

リポジトリ作成

mkdir -p ~/Dropbox/repos/ni-blog.git        
cd ~/Dropbox/repos/ni-blog.git              
git --bare init                           

リモートリポジトリの追加

リモートリポジトリの確認 現在のremoteはoctopressとoriginの2種類。 $ cd path/to/octopress $ git remote -v
octopress git://github.com/imathis/octopress.git (fetch) octopress git://github.com/imathis/octopress.git (push) origin git@github.com:niku4i/niku4i.github.com.git (fetch) origin git@github.com:niku4i/niku4i.github.com.git (push)
~/Dropbox/repos/ni-blog.gitをdropboxという名前で登録 git remote add dropbox ~/Dropbox/repos/ni-blog.git 確認 $ git remote -v
dropbox /Users/nikushi/Dropbox/repos/ni-blog.git (fetch)
dropbox /Users/nikushi/Dropbox/repos/ni-blog.git (push)
octopress git://github.com/imathis/octopress.git (fetch) octopress git://github.com/imathis/octopress.git (push)
origin git@github.com:niku4i/niku4i.github.com.git (fetch)
origin git@github.com:niku4i/niku4i.github.com.git (push)
dropboxが追加されました。

Dropboxのリポジトリにソースファイルをpushする

まずbareで作成したDropboxのリポジトリにpush。-uを指定することで以降git push(引数なし)で実行可能になります。最初の1回だけ-uつきで実行します。 $ git push -u dropbox source
Counting objects: 4110, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15981598), done.
Writing objects: 100% (41104110), 2.73 MiB, done.
Total 4110 (delta 2307), reused 3836 (delta 2197)
To /Users/nikushi/Dropbox/repos/ni-blog.git
* [new branch] source -> source
Branch source set up to track remote branch source from dropbox.
以後git pushを実行するとDropboxのリポジトリにバックアップされることになります。

バックアップからリカバリする

本当にバックアップされたか確認してみます。git cloneする際には-bでsourceブランチを指定する必要がありました。 mkdir ~/tmp/ && cd ~/tmp/ git clone -b source ~/Dropbox/repos/ni-blog.git cd ni-blog

この状態では、remoteはorigin=~/Dropbox/repos/ni-blog.gitのみがリモートリポジトリに設定されていますので、元々の設定に戻してあげます。現在のremoteの設定はgit remote -vで確認してください。 git remote add octopress git://github.com/imathis/octopress.git git remote rename origin dropbox git remote add origin git@github.com:niku4i/niku4i.github.com.git git push -u dropbox source
3つのremoteを設定し、dropboxリモートリポジトリをgit pushのデフォルトにしました。

rake deployにてgithubに記事をアップロード、git pushにてDropboxにバックアップするワークフローに変更しましたのでしばらく運用してみます。

2012/11/05 追記 最終的には、github.comをremoteにする運用に戻しました。 git push -u origin source