2012-04-02 10 views
49

私はすでにいくつかのスレッドがあることを知っていますが、誰も完全に正確にどのように最初の差分を実行して、パッチファイルを作成する方法を説明していないそのパッチを更新するパッチを適用します。ディレクトリ全体を更新するパッチを作成する方法は?

私の場合、誰でもウェブからダウンロードできるファイルのディレクトリがあります。私はそのディレクトリを取得してそれに変更を加え、パッチファイルを作成して、ダウンロードしたディレクトリに他の人がそれを適用して、自分が修正したディレクトリにあるものを正確に再現できるようにしたい。

ヘルプ?私のパッチを適用する方法に関して他人に何を伝える必要がありますか?

答えて

91

私はちょうど同じ問題を抱えていました。半分にする方法についてのアドバイスがたくさんありました。

をパッチファイルを作成するには::さて、ここで私はパッチの適用や仕事にunpatchingの両方を得るために何をしたかと言う/ tmpに両方のディレクトリの

  1. 入れコピーを、私たちは、パッチを作成することができます ファイル、またはもし勇気があれば、1つのディレクトリに並べてください。

  2. は新旧2つのディレクトリに適切な差分を実行します。人はOrig /ディレクトリがあり

    diff -ruN orig/ new/ > file.patch 
    # -r == recursive, so do subdirectories 
    # -u == unified style, if your system lacks it or if recipient 
    #  may not have it, use "-c" 
    # -N == treat absent files as empty 
    

場合は、パッチを実行して、新しいものを再作成することができます。

は、古いフォルダとパッチファイルから新しいフォルダを再作成するには:

  1. 移動ORIG /フォルダは、このフォルダは上書きされます

  2. が存在するディレクトリにパッチファイルを、そう保ちますどこかにバックアップするか、 コピーを使用してください。この時点で

    patch -s -p0 < file.patch 
    # -s == silent except errors 
    # -p0 == needed to find the proper folder 
    
  3. 、ORIG /フォルダは、新規/コンテンツが含まれていますが、それでも ので、その古い名前を持っています

    mv orig/ new/ # if the folder names are different 
    
+3

私はあなたの手を振ることができます。本当にありがとう! – poundifdef

+0

@DavidH CygwinでWindows上で動作しますか? – onmyway133

+0

私はマックの男だから分かりません。あなたがしなければならないことは、Cygwin上のpatchとdiffのオプションをチェックすることです。だから私は上記のコメントをオプションの意味に加えました。つまり、あるプログラムや他のプログラムが異なるオプションを提供している場合、それを動作させるために何を変えるべきかを知ることができます。概念的には、すべてのパッチ/差分プログラムが機能をサポートする必要があります。 –

2

は++ライブラリオープンソースのスカラベCをチェックアウト: https://github.com/loyso/Scarab

これはあなたの説明とまったく同じです。 xdeltaライブラリを使用してファイルごとの差分を作成し、アーカイブパッケージに格納します。そのパッケージを再配布してその違いを適用することができます。 Win32のバイナリがあります。

私はScarabプロジェクトの著者です。

関連する問題