The page navigation is complete. You may now navigate the page content as you wish.
The page navigation is complete. You may now navigate the page content as you wish.
2つのテキストの差分を取得する テキストの差分を取得するメソッドは、Diff::LCS.sdiff と Diff::LCS.diff の2つがある。複数行の文字列を比較した場合の2つのメソッドの違いは以下のとおり。 Diff::LCS.sdiff 比較結果を1文字ずつ表示する。 Diff::LCS.diff 比較した結果、違いがあった行について、違いがあった箇所のみ表示する。 実行結果 require 'diff/lcs' # [比較1] Diff::LCS.sdiff で text_a と text_b を比較 # text_a との比較結果が sdiffs 変数に格納される sdiffs = Diff::LCS.sdiff(text_a, text_b) sdiffs.each do |sdiff| p sdiff end # ["=", [0, "a"], [0, "a"]] # [
rspecでexpectするときに、「文字列が詰まった配列」を期待していたのですが、 期待と違う文字列が入ってた ("aaa"を期待してたのに"bbb"が入ってた) 期待してない文字列が入ってた (配列の要素数が増えてた) ってことがあって、ログに出力されるdiff見方がよくわからなかったので整理してみました。 # test_spec.rb require 'rspec' expected_data = { match: "title", mismatch: "description" } got_data = { match: "title", mismatch: "description!!", added: "22" } describe 'てすと' do context '配列比較' do it 'できるかな' do expect(got_data).to eq(expected_
皆さんはプロジェクトのリソースとしてエクセルの xlsx ファイルを使う事があると思います。 何てったって事務職の人ですら楽々使えるスーパー優れた UI なので、 web の管理画面とかを作り込むよりもエクセルでシート作ってもらってしまった方が早いケースも多いんです。現実の世界では。 で、普通の人は TSV にするだの CSV にしてもらうだのすると思うんですが、一方的にデータ貰うだけなら良いんだけど、相手とやり取りする時にはどうしても xlsx ファイル経由とかにしないと相手がこまる!やっぱりエンジニアのエは優しさのエだから相手に優しくしないとだめです。 で、 xslx ファイルでエンジニア以外の人とデータやり取りするとやっぱり、バージョン管理したくなるのが人情です。 でも xslx ファイルはバイナリファイルなので git diff とかが残念です。。。 って事で作っちゃいました。 h
日立オープンミドルウェアは、お客様の既存の財産を生かしながら、高い信頼性と柔軟性、自律性を備えたITシステムの実現を支えています。
まとめ $ git diff --no-prefix HEAD~ > thisis.patch $ patch --dry-run -p0 < thisis.patch $ patch -p0 < thisis.patch git diffに--no-prefixをつける事で、普通のpatchで当てられるパッチファイルを出力できます。この例ではHEADの1個前*1からHEAD*2までのパッチです。 普通のpatchコマンドのほうの知識があまり無くて-p0がいまいちよく分からないんですが、git diff --no-prefixで作成したパッチファイルを当てるには必要みたいです。--dry-runは、実際には当てないけど当てた場合の結果を出力します。なので、まずは--dry-runで確認して、問題が無ければ実際にパッチを当てます。 エントリー書いた後に教えてもらった補足 patch -p1の
git cherryで、ブランチ・ツリー間のコミットのdiffを見ることができる。 git cherry [-v] [<upstream> [<head> [<limit>]]] デフォルトでは、upsteamに無いコミットは"+"で、逆にheadになくてupstreamにあるコミットは"-"で表示される。それとsha1のみ。味もそっけもない。 "git cherry -v"で、コミットログもでる。 これでも充分だけど、もっとdiffっぽく色付けたり、Autherや日付表示したりしたい。のでこんなalias書いた # colorized cheery -v cch= "!f() { git cherry -v "$@" | awk '{ if($1 == \"+\"){ color = \"green\" } if($1 == \"-\"){ color = \"red\" } cmd =
差分を作る 作業ディレクトリで、以下を実行する。 $ svn diff -r 10:HEAD > foo.diff patchをあてる $ patch -p0 -E < foo.diff -E オプションを指定すると、パッチ適用後に空のファイルを削除する。 また、patchが当たるファイルを確認したい場合は、--dry-runオプションをつける。 patch -p0 --dry-run < foo.diff このとき、ファイルにpatchは適用されない。 あてたpatchを取り消す -Rオプションで、一応可能。 $ patch -p0 -R < foo.diff 元々-Rオプションは、差分の取り方が逆であったときに利用するオプション。 結果的に取り消すことができるが、そのような目的のオプションではないので、過信しないこと。
2つのファイルを比較して、行ごとの差分を表示したい場合には diff というコマンドを使用します。diff は、指定された ファイル1 と ファイル2 の内容を比較して、ファイル1 をどのように変更すれば ファイル2 と同じになるかという差分を出力します。 出力形式にはいくつかの種類がありますが、一般的には次のオプションとともに使用されます。 $ diff -urN test.txt.org test.txt --- test.txt.org Wed Apr 25 17:14:36 2001 +++ test.txt Wed Apr 25 17:14:11 2001 @@ -1,7 +1,9 @@ -This is file1 +This is file2 line1 line2 line3 line4 +line5 +line6 line7
diffとpatchコマンドを使うとファイルの変更を別のファイルに簡単に適用することができます。 例えば、サイトでWEBサーバーを複数台で運用していて1台のWEBサーバーに行った設定ファイルの変更を他のサーバーに適用するときなどに使えます。 基本的な作業の流れ ファイルへのパッチ適用を行う際はこんな感じです。 diffコマンドでパッチファイルを作成 作成したパッチファイルを元に、patchコマンドでパッチを適用 パッチファイルの作成 パッチファイルの作成にはdiffコマンドを使用します。コマンドの書式は以下のような形になります。 $ diff -u(または -c) 変更前のファイル 変更後のファイル > パッチファイル名オプションの「-u」はパッチファイルを、unified diff形式で出力するという指定です。 「-c」の場合はcontext diff形式での出力になります。 「-u(ま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く