Skip to content

Instantly share code, notes, and snippets.

View katzchang's full-sized avatar
🤯

Kazunori Otani katzchang

🤯
View GitHub Profile
@katzchang
katzchang / gist:4126092
Created November 21, 2012 17:07
rebaseはコミットグラフを綺麗にするためじゃなくてffマージをするためにあるのであった

ということで、ffマージはなぜ優れているかというと、マージ操作の際に機械的な構成変更が一切行われず、ブランチの移動が起こるのみなので、マージ後のブランチは、 必ず あなたが入念にテストしただろうマージしたブランチと全く同じ構成であることが保証されるわけである。これが大きい。

衝突検知をくぐり抜けて機械的マージが構成を壊してしまう例は他をご参照いただくとして、no-ffマージの場合にそういう面倒に対応する手段として次のようなものがあると思うが、いずれも確実性でffマージには劣る:

  • マージ前にバックマージを行い、マージ時の際をなくする
  • バックマージからマージまでの間に誰かのコミットが入るかもしれないので、たまに衝突したときのことも考えないとね
  • マージ後のテストで問題を発見し、修正をコミットする
  • 修正って場合によっては時間がかかる仕事でそのあいだmasterは不安定だし、マージ権限を持つ人が少数だとしたら負担でかいよね

ということで、どちらもffマージの恩恵を考えると、なかなか悩ましい。

<?php
class Curry
{
protected $callback, $bind;
protected function __construct($callback, Array $bind)
{
if(!is_callable($callback)) throw new InvalidArgumentException('$callback must be callable');
list($this->callback, $this->bind) = func_get_args();
}
<?php
class Curry
{
protected $callback, $bind;
protected function __construct($callback, Array $bind)
{
if(!is_callable($callback)) throw new InvalidArgumentException('$callback must be callable');
list($this->callback, $this->bind) = func_get_args();
}