2017-01-02 4 views
2

私はGitをバージョン管理システムに使用しています。
コミットメッセージを新しいファイルに追加し、親フォルダに配置する必要があります。

例:新しいファイルが/pr/ab/cd/ef/a.javaの場所に置かれている場合。ファイルを作成して、コミットメッセージとともにフォルダ "ef"に配置する必要があります。
コミットメッセージの詳細をチェックインされたファイルの場所に自動的に追加する方法

私はこの目的のためにフックを使用しようとしましたが、機能しません。

私はこれを以下のようにcommit-msg/pre-commit-msgテンプレートで使用しました。これはGitのbashの代わりにフックを使用して、シェルスクリプトとして作成されたときにこれが正常に動作している>

git ls-files --others --exclude-standard > D:/temp.txt 

if [ -f D:/temp.txt ] ; then 
    for line in `cat D:/temp.txt`; 
     do 
      if [ -f $line ] ; then 
       cp_path=`dirname $line` 
       echo `date +%d/%m/%Y:%H:%M`-$1-$line >> ${cp_path}/version1.txt 
      fi 
     done 
fi 

- 人跡未踏のファイルをリストに

私はTortoiseGitを使用して新しいチェックインを追加/コミットする際に、この作業を自動的に行うようにしています。

私を親切に案内します。

+1

好奇心ではない、*なぜ*これをやりたいですか?コミットメッセージがgitリポジトリ内に存在しないのはなぜですか?また、この新しいファイルをgitに追加しますか? – PatrickSteele

+0

リリース用と開発用の2つの独立した支店があります。開発版では、チェックインしたファイルをビルドして、テストシステムにデプロイするために追加します。リリースブランチでは、コンテンツの全部をビルドして展開して配置する必要があります。私はコンテンツ全体を取っているので、何が変更されたのかを把握することはできません。私はgitに行って、ログが変更されたかを確認する必要があります。 チェックインされたファイルをファイルに追加することで、このように自動的に追加すると考えられます。 – nirmalraj17

+0

私はhttp://stackoverflow.com/questions/24095474/append-the-commit-message-automatically-to-the-file-being-committed-in-gitやhttp: //stackoverflow.com/questions/3442874/in-git-how-can-i-write-the-current-commit-hash-to-a-file-in-the-ame-commit – nirmalraj17

答えて

4

私は最終的にポスト・コミット・フックを見つけ出し、自分の要件に従って修正しました。それは完全に機能します。

#!/bin/sh 
path="D:/temp.txt" 
git diff HEAD~1 --name-only > ${path} 
if ! test ${GIT_BYPASS_POST_COMMIT+set} 
then 
    export GIT_BYPASS_POST_COMMIT=1 
    for line in `cat $path`; do 
     if [[ ! $line =~ version.txt ]];then 
      file_path=`dirname $line` 
      git show --format=%B -s | cut -d '#' -f2 > ${file_path}/version.txt 
      echo " - " >> ${file_path}/version.txt 
      echo $line >> ${file_path}/version.txt 
      git add ${file_path}/version.txt 
     fi 
    done  
    git commit --amend -C HEAD 
fi 

コミット中に変更されたすべてのファイルが最初にキャプチャされ、ファイルに保存されます。 さて、これはversion.txtのファイルを除いたファイルリスト内の各ファイルを読み取り、"commit message - file name" が含まれており、それがコミット最後に再びコミットしますのversion.txtを追加します。

注:特定のディレクトリに変更がある場合、それらのディレクトリにはバージョンファイルが追加されます。

関連する問題