1

多くのサブモジュールを含む git リポジトリがあります。サブモジュールでコミットすると、「スーパーモジュール」でコミットすることになっている git フックがあります。残念ながら、「スーパーモジュール」がそのサブモジュールの変更を検出できないように見えるため、コミット後のフックでのコミットは失敗します。

この動作を達成できる他の方法はありますか?

grunt-githooksと を使用して Grunt を介してこれらすべてをセットアップしましたgrunt-git

以下は私のうなり声です:

module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    githooks: {
      all: {
        options: {
            dest: '../../../.git/modules/server/modules/mymodule/hooks'
        },
        'post-commit': 'updateSuperModule'
      }
    },

    gitcommit: {
        all: {
            options: {
                message: 'Updated Submodule',
                cwd: '../../..',
                verbose: true
            },
            files: {
                src: ['.']
            }
        }
    },

    gitpush: {
        all: {
            options: {
                cwd: '../../..',
                verbose: true
            }
        }
    }
  });

  grunt.loadNpmTasks('grunt-githooks');
  grunt.loadNpmTasks('grunt-git');
};
4

1 に答える 1

0

レポ (ここではサブモジュール) のコミットが別のレポ (ここでは ' ../../..' 内の親レポ) で git 操作を実行したい場合、フォルダーを変更するだけでは十分ではありません。

GIT_DIR最初に設定を解除してから、git コマンドを実行する必要があります (このフックのように)。

そうしないと、ステータスまたは追加操作がサブモジュールのコンテキストで実行されます(新しいコミットが行われたばかりで、ステータスがクリーンです)。

于 2014-07-10T06:41:32.283 に答える