Soru, her şeyi açıklıyor. Birleştirme öncesi bir eylem gerçekleştirmenin bir yolu var mı? Tahminimce pre-commit
kancasını kullanmanın bir yolu var, ama emin değilim.Git'te bir birleştirme kancası nasıl yazabilirim?
cevap
prepare-commit-msg
kancasını kullanmayı deneyebilirsiniz. İkinci argüman merge
olacaktır "eğer birleştirme birleştirme veya .git/MERGE_MSG
dosyası varsa". Sıfır olmayan bir çıkış durumu işlemi iptal edecektir.
Bunun bir hızlı iletme ile çalışacağını düşünmüyorum, çünkü bir taahhüt iletisi olmayacak.
kanca üzerindediğer bilgiler: https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_commit_msg
başka güzel bir geçici çözüm, bir shell script eklemek istediğiniz gibi diyoruz sonra komut dosyasına şu satırları eklemek olacaktır:
git() {
if [ "$1" == "merge" ]; then
echo "seems to work like a charme"
fi
command git "[email protected]"
}
git "[email protected]"
Sonra bir hale
alias git="./my-pre-merge-script.sh"
Öyleyse gitmeniz iyi. Sadece kendi birleştirme kancasını ekledin. Biliyorum, hangi argümanlara gitmenizin gerçek bir birleştirme öncesi kancasına geçeceğini bilmiyorum, ama dosyaları hazırlayabilirsin ya da şimdi birleştirme için hazırlanmak istediğin her şeyi yapabilirsin; Ben şahsen ben bu yaklaşım ile çok mutluyum: Önceden bir şey bulmak için 2 veya 3 gün geçirdim, sonra ihtiyaçlarım için yeterince doğru bulmadığım ön-taahhüt-msg ile gitmek zorunda kaldı. Bu tüm sorunlarımı çözer. Umarım bu gelecekte kimseye yardım eder.
Git birleştirme yaptığınızda bu tetiklenmez gibi görünüyor. Bunu görmek için a0>: Hazır a1> -çalışma-msg üstüne çıkış 1 'koymak ve birleştirme işlemini gerçekleştirin. –
Hızlı ileri birleştirme mi? Birleştirme bir taahhüt mesajını tetiklemezse, yardımcı olmaz. – Kousha
Bir taahhüt (mesaj) ile gerçek birleştirme için bile, bu tetiklenmez. Yukarıda açıklanan test ile denedim ... Bir örnekle yanlış olduğunun kanıtlanması için çok mutluyum, ama lütfen bunu bir test yap. –