fc2ブログ

Latest Entries

git bundleでコミットを送り合うテスト

タグ: Git

Alice: リポジトリを作る。

alice$ git init
alice$ echo A > alice.txt # 適当にファイルを作ってコミット
alice$ git add alice.txt
alice$ git commit -m "alice's commit A"
alice$ echo B >> alice.txt # 適当に変更を加えてコミット
alice$ git commit -a -m "alice's commit B"
aliceリポジトリ初期状態

Alice: aliceリポジトリのバンドルファイルを作成し、Bobに送る。

alice$ git bundle create ../alice.bundle HEAD 
alice$ git branch bob # バンドルファイルを作ったリビジョンにブランチを作っておく

Bob: 受け取ったバンドルファイルをcloneしてbobリポジトリを作る。

bob$ git clone alice.bundle bob
bob$ cd bob
bob$ git checkout -b master # masterブランチを用意
bob$ git branch alice # alice.bundleの先端にブランチを作っておく
clone直後のbobリポジトリ

Bob: bobリポジトリにコミットを追加する。

bob$ echo A > bob.txt
bob$ git add bob.txt
bob$ git commit -m "bob's commit A"
bob$ echo B >> bob.txt
bob$ git commit -a -m "bob's commit B"
bobリポジトリにコミットを追加

Bob: alice.bundleの先端からの差分バンドルファイルを作成してAliceに送る。

bob$ git bundle create ../bob.bundle alice..HEAD

Alice: AliceはAliceでaliceリポジトリにコミットを追加している。

alice$ echo C >> alice.txt
alice$ git commit -a -m "alice's commit C"
alice$ echo D >> alice.txt
alice$ git commit -a -m "alice's commit D"
aliceリポジトリにコミットを追加

Alice: Bobから受け取ったバンドルファイルをbobブランチにpullする。

alice$ git remote add bob ../bob.bundle
alice$ git checkout bob
alice$ git pull bob HEAD
AliceのbobブランチにBobの変更をpull

Alice: masterブランチにbobの変更を取り込む。

alice$ git checkout master
alice$ git merge bob
AliceのmasterにBobの変更を取り込んだ

Alice: bob.bundleの先端からの差分バンドルファイルを作成してBobに送る。

alice$ git bundle create ../alice.bundle bob..HEAD

Bob: Aliceから受け取った差分バンドルファイルをaliceブランチにpullする。

bob$ git checkout alice
bob$ git pull origin HEAD
BobのaliceブランチにAliceの変更をpull

Bob: masterブランチにaliceの変更を取り込み、作業を再開する。

bob$ git checkout master
bob$ git merge alice
BobのmasterにAliceの変更を取り込んだ

Redmine Issue Importer Pluginsメモ

タグ: Redmine

RedmineのCSVファイルインポートプラグイン「redmine_importer」のどのフォークがどんな特徴を持っているかのメモ。
確認に使用したRedmineはtrunk@5505(1.1.2.devel)。


akiko-pusu/redmine_importer_org - GitHub

rchady/redmine_importer系列。
zh.ymlがエラーを吐くので取り除いたり、SJISが化けないようにしたり、親チケットのIDを指定してインポートできるようにしてしばらく使っていたが、インポートするファイルが大きいとCookieOverflowが発生するので、ファイルをセッションに格納しないバージョンがあるか探してみることにした。


leovitch/redmine_importer - GitHub

leovitch1.png leovitch2.png

rchady/redmine_importer系列。

特徴:

  • 「コラム毎の対象のフィールド」を自動的に選択してくれる(※redmine_importer_orgと同じ挙動)
  • 「一意な値」を活用することで、親チケットと子チケットを同時に登録できる
  • 少し読みづらいが、日本語化されている
  • エンコーディングにSJISを指定しても、SJISのファイルは文字化けする(※redmine_importer_orgと同じ挙動)

インポートしてみたCSV:

題名,トラッカー,担当者,開始日,期日,親チケット,対象バージョン
親機能,機能,admin,,,,leovitch
子機能1,機能,admin,2011/4/25,2011/4/27,親機能,leovitch
子機能2,機能,admin,2011/4/28,2011/4/29,親機能,leovitch

akiko-pusu/redmine_importer - GitHub

akiko-push1.png akiko-push2.png

juno/redmine_importer系列。

特徴:

  • 日本語化されている
  • SJISのファイルを文字化けせずに読み込める
  • 「対応させるフィールドの選択」はすべて手動で行わなければならない
  • 子チケットを一括登録する手段は用意されていない

インポートしてみたCSV:

題名,トラッカー,担当者,開始日,期日,対象バージョン
チケット1,機能,admin,2011/4/25,2011/4/27,akiko-pusu
チケット2,機能,admin,2011/4/28,2011/4/29,akiko-pusu

2つのプラグインでインポートしてみた後のチケット一覧:

imported_tickets.png

TortoiseGit rebase

タグ: Git TortoiseGit Windows

TortoiseGit 1.6.5(with msysGit 1.7.4)の使い勝手を調べていたときのお話。

tgit_rebase_1.png

この状態から

tgit_rebase_2.png

piyoブランチをmasterブランチのHEADにrebaseしようとしたら

tgit_rebase_3.png

「add piyo.txt」のコミットが消えた。

rebaseの使い方を誤ったのだろうか?
いずれにせよ、このおかしな歴史は元に戻さなければならない。
shift+コンテクストメニューでReflogを出す。

tgit_rebase_4.png
tgit_rebase_5.png

何か表示がおかしい気がするが……

tgit_rebase_6.png

Refを指定したらすっきりした。

tgit_rebase_7.png

piyo{1}を選び、「add piyo.txt」の頃にresetする。
これで無事、rebaseする前の状態に戻ることができた。

さて、この「rebaseするとコミットが消える」現象。
TortoiseGitのIssuesの方にも「時々起こる問題」として何件か上がっているが、最終的には「Issue 512: Git sync lose local commits (remote update, fetch and rebase)」にて

The issue always occurred on single-core machines, or when manually setup affinity mask of TortoiceProc to one core.

「シングルコアのマシンなら確実に起こる」というコメントと共にパッチが上げられていた。
シングルコアとは、なるほど今時のマシンでは発症しにくそうな不具合である。

では、このパッチを適用したバイナリを入れて再度rebaseしてみよう。

tgit_rebase_8.png
tgit_rebase_9.png

今度は期待通りの歴史になることが確認された。

叩けば動く

久しぶりにXbox 360を起動しようとしたら、HDDがカチカチ言ったのち赤ランプが1つ点灯、システムエラー「E68」が出た。
検索してみたところ、これはHDD関係のエラーだそうで(カチカチ言ってるしなぁ)、ありがたいことに直し方の動画まで上げられていた。

……そんなバカな(;´Д`)

しかしまあ、直っている人も結構いるみたいだし、そもそもこのまま何もしなかったらこのHDDは廃棄するしないし、思い切って叩いてみると……

起動した。

マジか。
「立てれば動く」プレイステーションみたいなものなのか。
というかまさか今の時代に精密機器を叩いて直すとは思わなかった。

もっとも、起動はするのだけれど、HDDがカチカチ言う症状は変わっていない。
故障を無視してむりやり動いているような、そんな状態な気がしないでもない。

MacBook Pro (Early 2011)

タグ: Mac

2/25に注文、3/2到着。
構成は

  • 2.3GHzクアッドコアIntel Core i7
  • 8GB 1333MHz DDR3 SDRAM - 2x4GB
  • MacBook Pro 15-inch Hi-Res Antiglare Widescreen Display

今回初めてTime Machineからの環境移行を試したのだけれど、これはちゃんと移行前のバックアップも参照できるようになるのね。便利便利。

で、移行後ちょろちょろっと触ってみたわけだが、さすがにEarly 2006からLate 2008に変えた時のような、「Firefoxの起動に掛かる時間が15バウンドから2バウンドに!」というほどの劇的な違いは感じられなかった。
なんか重い処理でも流さないと違いが分かりそうにないので、とりあえずXBenchで前の環境と比較して(0゜・∀・)することにする。

まずは2年半ほど使ったLate 2008のスコア。

late2008_xbench_overview.png

次に、そのLate 2008の環境を引き継いだEarly 2011のスコア。

early2011_xbench_overview.png

うーん、わくわくする差だなー……て

Disk Test    64.27

Late 2008の、なんだ、これ。
Early 2011と比べて読み込みで2倍、書き込みで9倍遅いときた。
もとからこんなだっけ……

Appendix

タグ

Blog内検索