問題タブ [pre-commit-hook]
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.
svn - SVNにコミットされたファイルがpre-commitフックを使用してUTF-8でエンコードされているかどうかを確認するにはどうすればよいですか?
Linux BashでSVNpre-commitフックスクリプトを作成しようとしています。このスクリプトは、ファイルをUTF-8として解析できない場合にコミットを拒否します。
これまでのところ、私はこのスクリプトを書きました:
問題は、iconvがコミットされたファイル(または他の形式のテキスト)へのパスを必要とし、それを取得する方法がわからないことです。
誰か助けてもらえますか?
svn - シェル スクリプトでのみサブディレクトリ名を検証する SVN pre-commit フック
サブディレクトリ名を yyyymmdd 形式で検証するプレコミット フックを追加しようとしています。プロジェクト フォルダ全体ではなく、特定のディレクトリにのみ適用する必要があります。フック スクリプトの作成を手伝ってください。
linux - SVNリビジョンからではなくSVNトランザクションから読み取るときに、iconvがエラーで終了するのはなぜですか?
%%問題は解決し、以下のコードは期待どおりに機能します%%
着信ファイルのUTF-8エンコーディングをテストするSVNpre-commitフックをBashで作成しようとしています。着信ファイルのパスを取得し、dirs / pictures /削除されたファイルなどを無視するために多くの文字列ジャグリングを行った後、「svnlook cat」を使用して着信ファイルを読み取り、「iconv-fUTF-8」にパイプします。この後、${PIPESTATUS[1]}を使用してiconv操作の終了ステータスを読み取りました。
私のコードは次のようになります。
問題は、「æøå」のようなスカンジナビア文字を含むファイルをコミットしようとするたびに、iconvがエラー(出口1)を返すことです。
スクリプトを無効にした場合は、「æøå」を使用してファイルをコミットし、「svnlook-t」および「svnlookcat -t」の-t(トランザクション)を-r(リビジョン)に変更して、リビジョンを使用してスクリプトを手動で実行します「æøå」ファイルの番号、次にiconv(およびそのためのスクリプト)はexit0を返します。そしてすべてがダンディです。
svnlook cat -rが期待どおりに機能する(UTF-8でエンコードされた「æøå」文字列を返す)のに、svnlook cat -tが機能しないのはなぜですか?
git - git pre-commit フック、インデックスにファイルを追加
ファイルが変更されたかどうかを確認するための単純な pre-commit フックを作成しようとしています。変更されている場合は、圧縮して現在のインデックスに追加します。
私には 2 つの問題があります。これは私が返すエラーです:
そして私の2番目の問題は、条件を削除しても、ファイルが実際にはコミットに追加されず、変更されても追加されないことです。
ありがとう、レオ
github - githubはprecommithookをサポートしていますか?
現在、SVNを使用しています。GitHubの使用を開始したいのですが、絶対的な要件の1つは、現在のようにコードの事前コミット(事前マージ)検証を行う必要があることです。GitHubはprecommithooks(premergehooks)をサポートしていますか?
私たちは5人の開発者のチームです。すべてのコード(JavaScript)がJSLintのような検証に合格する必要があることに合意しました。自主的な検証は、簡単に忘れられるため、機能しないことが証明されています。他の人が利用できるようになるコードがJSLint(または同様のもの)に対して検証されることが保証されていることをどのように確認できますか?
c# - SVN pre-commit-hook、クライアントウィンドウでログメッセージを設定する方法はありますか?
私の質問を読んでくれてありがとう:)
私の目標は、コミットがSVN-Serverに発行される前に、このメッセージを変更することです:
私はすでに開始フックと事前コミットフック (C#) を持っています。何かをコミットしようとすると、両方が呼び出されます。また、動作中の SharpSvn ライブラリもあります。しかし、残念ながら私は前進していません。このメッセージをどのように記入すればよいかわかりません。
それは可能ですか?私はすべての小さなヒントに満足しています:)
svn - pre-commit スクリプトでのブランチの再統合またはマージの検出
pre-commit スクリプト内で、? に起因するコミットを特定することは可能svn merge
ですか?
svnlook changed ...
変更されたファイルを表示しますが、マージと手動編集を区別しません。
merge
理想的には、標準とを区別したいと思いmerge --reintegrate
ます。
バックグラウンド:
プロジェクトに SVN の使用ポリシーを適用するために pre-commit フックを使用する可能性を探っています。
ポリシーの 1 つは、一部のディレクトリ ( など/trunk
) を直接変更してはならず、機能ブランチの再統合によってのみ変更する必要があると述べています。したがって、pre-commit スクリプトは、ブランチの再統合を除いて、これらのディレクトリに加えられたすべての変更を拒否します。
何か案は?
アップデート:
コマンドを調査しましたが、最も近いのは、ディレクトリsvnlook
のプロパティへの変更を検出して解析することです。svn:mergeinfo
このアプローチにはいくつかの欠点があります。
svnlook
プロパティの変更にフラグを立てることはできますが、どのプロパティが変更されたかはわかりません。proplist
(前のリビジョンとの差分が必要です)- の変更を調べることで
svn:mergeinfo
、実行されたことを検出できsvn merge
ます。ただし、コミットが純粋にマージの結果であるかどうかを判断する方法はありません。マージ後に手動で行った変更は検出されません。(関連記事:別のパス/リビジョンに対するトランザクション ツリーの差分)
svn - トランザクション ツリーを別のパス/リビジョンと比較する
コミット前のスクリプトで、同じリポジトリ内の任意のパス/リビジョンに対してコミットされた変更の差分を取得するにはどうすればよいですか?
たとえば、内のファイルへの変更がコミットされると、コミットされた (まだリビジョンではない)/trunk
の差分を取得したいと思います(これは のブランチです)。/trunk
/branches/feature_x
/trunk
私が知る限りsvnlook diff
、そのトランザクションによって提案された変更のみが表示されますが、トランザクションではsvn diff
なくリビジョンでのみ機能します。
力ずくの方法は、変更されたすべてのファイルの " svnlook cat ...
" と " "の出力を比較することです。svn cat PATH:REV
ただし、それはかなり非効率的であり、フック スクリプトに含めたいとは思わないものです。
バックグラウンド:
特定のディレクトリへのすべてのコミットを拒否し、ブランチの再統合によってのみ変更を許可するプレコミット スクリプトを作成しようとしています (関連記事:プレコミット スクリプトでブランチの再統合またはマージを検出する)。
これまでのところ、ベース ディレクトリのプロパティをsvn merge
調べることで の使用を検出できるようです。svn:mergeinfo
ただし、マージによって適用されたファイルの変更と手動で行われたファイルの変更を区別することはできないため、マージ後の編集は検出されません。
コミットされたトランザクション ツリーをマージのソースと比較して、余分な変更が加えられていないことを確認できるようにしたいと考えています。(私たちのプロジェクト ポリシーに従って、すべての競合の解決は再統合の前にフィーチャー ブランチで行われるため、後で変更する必要はありませんmerge --reintegrate
) /trunk
。
svn - 事前コミットでのトランザクションのベースリビジョンの決定
トランザクションの前にファイルの内容に基づいていくつかのルールを適用したいpre-commitフックを書いています。したがって、トランザクションの開始時に、「U」、「UU」、または「D」とマークされたファイルの内容を、保留中の変更なしでsvnlookcatしたいと思います。提供されたトランザクション識別子(事前コミットの2番目の引数)を取得し、ダッシュとそれに続く文字を取り除き、「基本リビジョン」と見なしても安全ですか?この情報を入手するためのより良い方法はありますか?