問題タブ [patch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio - ソース管理とバグ修正のベストプラクティス
コミットされた現在の開発、または現在のバージョンからの変更を含まないバグパッチを発行する必要がある場合、プロセスをより安全に、より低いオーバーヘッドで行うために何をすべきですか?
現在、主にVisual Studio 2008で開発している小規模(3人の開発者)チームのソース管理にSubversionを使用しています。チームは、来年中に8人の開発者にグループ化され、以前のリリースのサポートはさらに複雑になると予想されます。ほとんどのお客様は現在のリリースを使用していますが、一部のお客様はさらに遅れています。
patch - Microsoft (および大規模なインストール ベースを持つ他のソフトウェア会社) は、パッチの依存関係をどのように管理していますか?
Microsoft がコミュニティにリリースする OS (通常はセキュリティ ベース) のパッチとホットフィックスは、通常、一連の更新された DLL またはその他のバイナリで構成されていると理解しています。
Microsoft やその他の企業は、修正プログラムが互いに衝突しないようにどのように保証していますか? 単一の修正プログラムに以前の修正プログラムのすべての修正が含まれる、累積的な修正プログラムのアプローチを常に採用していますか? 多くの修正プログラムは特定の問題の修正に重点を置いているように見えるため、これは当てはまらないようです。それらが焦点を絞った修正プログラムである場合、ある修正プログラムが別の修正プログラムを破壊するのをどのように防止しますか (たとえば、互換性のない DLL が互いにインストールされているなど)。
私は常に、このプロセスを管理する Microsoft の能力に感心してきました。私が働いている会社はずっと小規模で、数年前にパッチ プロセスに取り組んだときは、常に累積的なアプローチを採用していました。つまり、単一のパッチが、そのリリースに基づく以前のすべてのパッチに即座に取って代わりました。これは、次の「公式」リリースが公開されるまで、パッチのサイズが徐々に大きくなることを意味していました。
パッチの依存関係を管理するための良い方法は何ですか?
assembly - ゲームやアプリケーションのパッチを作成するには、どのような知識が必要ですか?
ソフトウェア ベンダーがアプリケーションやゲームを出荷した後、以前のビルドの動作を変更する別の実行可能ファイルのセットを提供する方法について、私はいつも不思議に思っていました。これはどのように行われますか?元のアプリケーションとパッチは何らかの規則に従う必要がありますか? または、パッチは元の実行可能ファイルにクロールし、そのアセンブリ情報を変更しますか? それにはバイナリファイルのバイトレベルまでの知識が必要ですか?
diff - ホット フィックス/パッチ用のファイルの特定
私たちは (ときどき!) 製品のホット フィックスを発行する必要があります。これは、新しいインストーラを使用するのではなく、影響を受けるファイルを直接再発行することによって行います。製品には多数の部分があり、管理されたコードと管理されていないコードがあります。
現在、成果物 (exe、dll) をビルドする開発フラグは、ホット フィックスで出荷する必要があります。以前のビルドと比較して、これらを自動的に識別できるようにしたいと考えています。単純なバイナリ diff は機能しません。ビルドの一部である場合、すべてのファイルのバージョン番号が新しい番号でファイルにスタンプされるため変更されているためです。
よりインテリジェントな比較を行い、どのファイルを含めるかを決定するツールはありますか? 開発者にリストをチェックしてもらいます。これは、開発者が考えていなかったファイルをキャッチするためのものであり、その逆ではありません。
(注: ホット フィックス/ビルド プロセスを変更することは、当面の選択肢ではありません。個々のファイルを出荷する必要があるかどうかは別の議論です!)
eclipse - サブクリップ:[チーム]> [パッチの作成]で相対パスを使用する方法はありますか?
私は最近、仕事でJavaプロジェクトに参加しました。IDEにはMyEclipseを使用し、ソース管理の統合にはSubclipseを使用しています。私はプロジェクトに不慣れなので、他のチームメンバーが私の変更を確認し、トランクにコミットするかどうかを決定しやすくするために、現在パッチとして変更を送信しています。ただし、[チーム]メニューの[パッチの作成]オプションを使用してパッチを作成すると、結果のパッチには、変更されたファイルへの絶対パスが含まれます。これらのパッチを他のチームメンバーに電子メールで送信し、自分の作業フォルダーにパッチを適用するだけでよいようにしたいので、相対ファイルパスのみを含むパッチを作成したいと思います(私はUbuntuで実行しており、現在私の作業コピーは私のホームフォルダにあるので、絶対パスは特に厄介です)。
これを行うようにEclipse/Subclipseを構成する方法はありますか?Eclipseの設定を検索し、パッチの作成ウィザードを数回クリックしましたが、これを実行するように見えるものは見つかりませんでした。現在、テキストエディタを使用してパッチファイルを手動で編集し、絶対ファイルパスを相対パスに変換しています。Subclipseでこれができない場合は、他の提案を受け付けています。
編集:Eclipse内からパッチを適用するときに、ファイル名パス内の特定の数のセグメントを無視するオプションがあることは知っていますが、これを回避して関連する手順の数を減らす方法があるかどうか興味がありましたパッチを適用する際に。パスを手動で編集してプロジェクトのルートフォルダーを基準にすることにより、エンドユーザーはルートプロジェクトフォルダーレベルでパッチを適用する必要があります。パッチファイルを手動で編集しなくても、そのシンプルさを実現したいと思います。
macos - NOPに置き換えることでCALLLにパッチを適用することは、ユーザースペースでは機能しますが、カーネルスペースでは機能しません。
パッチを適用したいデバイスドライバがあります。このデバイスドライバーはIOLogを呼び出し、ログを削除したいと思います。
CALLL to IOLogをデバイスドライバー(kext)内の(対応する数の)NOPに置き換えると、カーネルがクラッシュし、スタックが破壊されたように見えます(「バックトレースが終了しました-無効なフレームポインター0」)。
ただし、同じ手法がユーザースペースで正常に機能します(たとえば、OS Xバイナリ内のNSLogをNOPpingします)。
ここで何が欠けていますか?
linux - Linux でのユーザー空間からの sycall のフック
Linux ですべてのシステムコールをキャッチする方法はありますか? 私が知っている唯一の解決策は、 LD_PRELOAD à la fakerootを使用することですが、それは動的にリンクされたアプリケーションに対してのみ機能します。さらに、このアプローチでは、すべてのシステムコールを列挙する必要がありますが、これは避けたいことです。
maintenance - パッチvs.ホットフィックスvs.メンテナンスリリースvs.サービスパックvs.
バージョン1とバージョン2の間のどこかにいるとき、ソフトウェアを保守するために何をしますか?
パッチ、ホットフィックス、メンテナンスリリース、サービスパックなどの用語はすべて、私の観点からはぼやけており、話し相手によって定義が異なります。
リリース間の増分保守作業を何と呼びますか?
version-control - 別の開発者にパッチを送信し、マージの競合を回避するにはどうすればよいですか?
別の開発者に送信するためにコミットからパッチを取得するにはどうすればよいですか? また、後でツリーをマージするときに、このパッチとのマージの競合を回避するにはどうすればよいですか?
方法を知っている場合は、Subversion、git、Mercurial、bzr などの選択した VCS でこれを行う方法を説明してください。
svn - svn cp または svn mv が使用されたときに、パッチが適用されるファイルを svn diff で作成する方法は?
シナリオは次のとおりです。
- svn cp または mv 一部のファイル
- そのファイルを変更する
- svn diff > マイパッチ
他のマシン (同じ作業コピー、ただし変更なし):
- mypatch を適用してみてください。
- 失敗 -> 存在しないファイルを変更しようとします。
この場合、svn diff にパッチ適用可能なパッチを生成させる、または svn diff によって生成されたパッチをきれいに適用するにはどうすればよいですか? コミットできません。私はmergeinfoを保持したいと思います(明らかな回避策は、以前のファイルに接続せずに、ファイルを完全に新しいものとして追加することであるため)。