Git pre-commit hook berfungsi sebagai post-commit

Judulnya cukup menjelaskan semuanya.

Di repo lokal saya punya folder .git yang berisi kait saya. Saya menggunakan sumber Lua khusus saya untuk menulis versi saat ini dalam file di dalamnya. Kemudian di hook pra-komit saya punya:

#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".

echo "START" >> E:/Desktop/tmp.txt

exec $LUA_HOME\\lua.exe ${PWD}\\hooks\\pre-commit.lua "${PWD}/lua/autorun/trackassembly_init.lua" "Rev." > E:/Desktop/tmp.txt

Saya punya dua file. Yang pertama saya melakukan perubahan aktual (file sumber). Yang kedua saya gunakan untuk menulis versi saat ini di (file versi).

Setiap kali saya menggunakan TortoiseGit dan melakukan:

1) Modify the source file
2) Repo Directory --> Right Click --> Git Commit "master"

Informasi tentang file sumber ditambahkan dalam indeks, tetapi tidak ada jejak file versi yang diubah dengan versi baru di dalamnya. Hal ini menyebabkan perbedaan antara copy pekerjaan dan file versi dan TortoiseGit menempatkan (!) pada direktori.

Menurut manualnya:

Hook pra-komit dijalankan terlebih dahulu, bahkan sebelum Anda mengetikkan pesan komit. Ini digunakan untuk memeriksa snapshot yang akan dikomit, untuk melihat apakah Anda melupakan sesuatu, untuk memastikan pengujian berjalan, atau untuk memeriksa apa pun yang perlu Anda periksa dalam kode. Keluar dari angka bukan nol dari hook ini akan membatalkan komit


person Деян Добромиров    schedule 24.09.2015    source sumber


Jawaban (1)


Di git, pertama-tama Anda melakukan perubahan (git add), lalu Anda mengkomitnya (git commit), (lalu Anda mendorongnya, tetapi itu tidak penting di sini). Kait pasca-komit dijalankan setelah komit; jika Anda mengubah copy pekerjaan pada saat itu, hal itu tidak mempengaruhi perubahan bertahap.

person choroba    schedule 24.09.2015
comment
Lalu bagaimana cara memasukkan versi saya? Ini berfungsi ketika saya mengatur TortoiseGit untuk menggunakan sesuatu yang disebut start-commit hook. Itu berhasil tetapi IDK apakah itu tersedia di direktori .git/hooks tebakan saya adalah ... tidak, setelah menempatkan file di sana bernama start-commit, ia bahkan tidak menemukannya. - person Деян Добромиров; 24.09.2015
comment
@ДеянДобромиров: Hanya git add file yang diubah setelah perubahan di hook. - person choroba; 24.09.2015
comment
Jalankan git add ${PWD}/lua/autorun/trackassembly_init.lua sebelum dan sesudah file versi berubah dan tidak ada efek apa pun.. - person Деян Добромиров; 24.09.2015
comment
@ДеянДобромиров: Aneh. Saya mencoba dengan git add file setelah perubahan dan berhasil untuk saya. - person choroba; 24.09.2015
comment
Juga tidak ada opsi Tambah di menu konteks file yang dimodifikasi di TortoiseGit. Klien apa yang Anda gunakan? - person Деян Добромиров; 24.09.2015
comment
Mencoba dengan ' git add ${PWD}\\lua\\autorun\\trackassembly_init.lua git commit --amend --no-edit ' - person Деян Добромиров; 24.09.2015
comment
@ДеянДобромиров: Saya menggunakan baris perintah git yang disertakan dengan linux atau cygwin. - person choroba; 24.09.2015
comment
Oh, kalau begitu, sudahlah, Hanya menggunakan metode lama saya malah berfungsi seperti pesona dengan file *.bat di bawah windows - person Деян Добромиров; 25.09.2015