svnやgitを使ってると、特に意識することはないけど、
仕組みというか概念というか、とりあえず使ってみた。
diff -u 1.pl 2.pl
--- 1.pl 2011-06-29 23:49:54.000000000 +0900
+++ 2.pl 2011-06-29 23:50:10.000000000 +0900
@@ -1,3 +1,3 @@
1
-2
+22
3
diff -c 1.txt 2.txt
*** 1.pl 2011-06-29 23:49:54.000000000 +0900
--- 2.pl 2011-06-29 23:50:10.000000000 +0900
***************
*** 1,3 ****
1
! 2
3
--- 1,3 ----
1
! 22
3
-uを付けるとunified 出力形式を用いる。
-cを付けるとcontext 出力形式を用いる。
まぁどちらでもよいけど、-uを選択。
それをsample.patchとして保存。
基本的な使い方
patch <sample.patch
オプション
-b : バックアップ -B だとプレフィックスを指定できる
-R : パッチは新旧のファイルが反転しているとみなす。
--dry-run : パ ッチを当てたときの結果を表示
-f : 問い合わせ無しの実行
-i [pach file] : パッチをファイルから読み込む - を指定すると標準入力(デフォルト)
-p[num] : 適用するパスのプレフィックスを[num]個削除する
--verbose : 詳細情報表示
異なるサーバ間のファイルをマージする
開発環境が複数あると、マージなんかが大変になるわけで、比較的簡単にやりたい。
出来ればGUIでやりたいのだが、WindowsのWinMergeみたいな便利なものがなく、
ひとまず p4Mergeでチャレンジ
1.まずマウントしてローカルファイルのアクセスをできるように
mount -w -t smbfs //user:pass@dev1/path /mnt/dev1/path/
mount -w -t smbfs //user:pass@dev2/path /mnt/dev2/path/
2.p4mergeを呼び出す
p4merge ベースファイル 左側のファイル 右側のファイル マージ結果ファイル
p4merge /mnt/dev1/hrk_ys/lib/Foo.pm /mnt/dev1/hrk_ys/lib/Foo.pm /mnt/dev2/hrk_ys/lib/Foo.pm /mnt/dev2/hrk_ys/lib/Foo.pm
ベースファイルはsvn HEADとかから取得するといんだろうなー。
※Automatorを使うと便利 テキスト入力から取得してコマンドを作るみたいな
※dev_host1 dev_host2 lib/Foo.pm => p4merge ...
ひとまずこれでGUIでなんとか出来る。
出来ればGUIでやりたいのだが、WindowsのWinMergeみたいな便利なものがなく、
ひとまず p4Mergeでチャレンジ
1.まずマウントしてローカルファイルのアクセスをできるように
mount -w -t smbfs //user:pass@dev1/path /mnt/dev1/path/
mount -w -t smbfs //user:pass@dev2/path /mnt/dev2/path/
2.p4mergeを呼び出す
p4merge ベースファイル 左側のファイル 右側のファイル マージ結果ファイル
p4merge /mnt/dev1/hrk_ys/lib/Foo.pm /mnt/dev1/hrk_ys/lib/Foo.pm /mnt/dev2/hrk_ys/lib/Foo.pm /mnt/dev2/hrk_ys/lib/Foo.pm
ベースファイルはsvn HEADとかから取得するといんだろうなー。
※Automatorを使うと便利 テキスト入力から取得してコマンドを作るみたいな
※dev_host1 dev_host2 lib/Foo.pm => p4merge ...
ひとまずこれでGUIでなんとか出来る。
Perlのeachには気をつけろ
perlのeachではまったので、メモを。
$ perl -v
This is perl, v5.8.5 built for i386-linux-thread-multi
サンプルソース
結果
not ok 1
ちなみに、Sortkeys(0)をすると、okとなります。
同様にnote explain $hashでもnot okになります。
explain は内部的にData::Dumperを呼んでいるため。
そして、何が原因か探ろうとおもったのですが、
中身がData::Dumper::Dumpex(実物はxs)なので断念。
たぶん、eachでつかうitaratorがリセットされてないだけだと思いますが。。
こんな感じです。
ついついexplainしたくなりますが、気をつけます。
$ perl -v
This is perl, v5.8.5 built for i386-linux-thread-multi
サンプルソース
use strict;
use Data::Dumper;
use Test::More;
my $hash = +{ a => 1 };
#note explain $hash;
Data::Dumper->new( [$hash] )->Sortkeys(1)->Dump;
ok each %{ $hash };
結果
not ok 1
ちなみに、Sortkeys(0)をすると、okとなります。
同様にnote explain $hashでもnot okになります。
explain は内部的にData::Dumperを呼んでいるため。
そして、何が原因か探ろうとおもったのですが、
中身がData::Dumper::Dumpex(実物はxs)なので断念。
たぶん、eachでつかうitaratorがリセットされてないだけだと思いますが。。
こんな感じです。
use strict;
use Test::More;
my $hash = +{ a => 1 };
#note explain $hash;
#Data::Dumper->new( [$hash] )->Sortkeys(1)->Dump;
while (my $k = each %{ $hash } ) {
last
}
ok each %{ $hash };
ついついexplainしたくなりますが、気をつけます。
登録:
投稿 (Atom)
ReactNativeでAndroid対応する話
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...
-
perlにおいて例外を発生するやり方は、普通、warnとかdieとかですが、コール元の情報が表示されないため、例外が発生して事が分かっても、どのように呼ばれて例外が発生したのか分かりづらい事が多々あります。(たぶん) そんなこんなで、より解析しやすいcarp/croakをちょっと...
-
Fastlaneを使ってデバイスの登録を行い、Provisioning Profileへの追加、Xcodeの更新を行う デバイスの追加 register_devicesで追加 https://docs.fastlane.tools/actions/#register...
-
UILabelの高さ取得に気をつけること 1. xibやstoryboradの指定したFontと、プログラムで指定しているフォントは同じかどうか 2. viewDidLoad時ではまだviewのサイズが決まっていない ロジック NSString func...