Redmine-生産更新管理

Webアプリケーションの開発プロセスでは、多くの場合2つの質問があります。

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






All Articles