1.すでに解決されているが、まだバトルサーバーにアップロードされていないタスク。 つまり、gitを更新するときに戦闘サーバーに正確に何が注がれるのか
2.ログをすばやく表示する方法-サーバーに何をいつアップロードしたか。
バージョン管理システムとして、gitが使用されます(それを介して、実稼働サーバーが更新されます)。 Redmineのタスクマネージャーとして。
redmineについてのいくつかの言葉。 彼のために、Hetznerから最も安価なVPSを取得し、リポジトリをredmineに関連付けました。 「
re #111
」という形式のコミットに対するコメントがタスクNo. 111に自動的に添付されると、非常に便利です。 したがって、「
fix #111
」はこのタスクを閉じます。 さて、リビジョンへのリンクを示したり、コミット間の差分を表示したりする形式のパン メインの「マスター」リポジトリはgithubにありますが、私はそれを放棄します。
したがって、上記の質問はコンソールのコマンドを使用してかなり簡単に回答できます。
1。
git config --global alias.incoming '!git remote update -p; git log ..@{u}'
そして、さらに
git incoming
コマンドで、それが私たちにあふれることがわかります。 詳細はこちら (リンクはq&aにあります )
2。
git reflog
そして
git log HEAD@{1}..HEAD@{0}
ただし、この方法は必ずしも便利ではありません。 特に、タスク#111が何であるかがすぐにはわからず、ログでフラッシュされます。
より便利にするためにどのように実装したか。
タスクのredmineでは、新しい論理フィールドProductionが追加されました。はい-サーバーにアップロードされ、いいえ-アップロードされません。
また、ユーザーRobotがredmineに追加されました。
サーバーにアップロードするとき、フック
post-merge
ます。 このフックは、どのコミットがアップロードされたかを正確に調べ、各コミットを実行し、タスク番号がある場合は
Production=true
redmineでこのタスクをマークし、最後に変更の最終リストを作成し、ロボットのタスクを作成します(ステータスは「解決済み」)そしてそこに変更を書き込みます。
フックはphpで記述されているため Ruby on Rails REST APIを操作するための優れたActiveResource.phpライブラリが見つかりました。
コード全体を提供します 少しあります:
#!/usr/bin/php <?php require_once ('ActiveResource.php'); // . User . class Issue extends ActiveResource { var $site = 'http://redmine.site.com/'; var $request_format = 'xml'; var $extra_params = '?key=API_KEY'; } $issue = new Issue(); // , . exec('git log --pretty="%h=!=%an=!=%s" HEAD@{1}..HEAD@{0}',$logs); // , $s = ""; // foreach($logs as $log){ // , , list($hash, $name, $comment) = explode("=!=", $log); // echo $hash . " " . $name . " " . $comment . "\n"; // # - . $s .= "# "; // if(preg_match("/#\d+/", $comment, $ids)){ $id = substr($ids[0],1); $issue->find($id); // Production true. ID. 2. $issue->set("custom_fields", array("@type"=>"array", array("custom_field"=>array("@id"=>"2", "value"=>1)))); $issue->save(); // " " . alt . - . $s .= "+ " . $ids[0] . "+ "; } // .. - . . $s .= "commit:" . $hash; // $s .= " *".$name."*"; // , , 2 $comment = trim(preg_replace("/^.*#\d+/", "", $comment)); if(!empty($comment)){ $s .= ", _" . $comment . "_"; } $s .= "\n"; } // . $newIssue = new Issue(array ('subject' => ' Production', 'project_id' => '2')); // $newIssue->set("description", $s); // $newIssue->set("status_id",3); // $newIssue->set("assigned_to_id",12); $newIssue->save();
最終的な説明のタスクは次のようになります。
最後に何がありますか。
redmineフィルターを使用して、解決されたがあふれていないタスクを確認できます。 また、サーバーでいつ、何が更新されたかを簡単に確認できます-レポートに便利です。
ところで、.bashrcに自分を追加してください
alias gl='git log --pretty="%Cgreen%h %Cblue%an%Creset %s %Cred%ar"'
git log
代わりに
gl
を使用し
git log
。