Catatan: Ini dari 2009 dan mungkin bagus tetapi ada pilihan yang lebih baik sekarang.
Kami menggunakan ini. Disebut git-pup
:
#!/bin/bash
# Exists to fully update the git repo that you are sitting in...
git pull && git submodule init && git submodule update && git submodule status
Masukkan saja ke direktori bin yang sesuai (/ usr / local / bin). Jika pada Windows, Anda mungkin perlu memodifikasi sintaks untuk membuatnya bekerja :)
Memperbarui:
Menanggapi komentar oleh penulis asli tentang menarik semua KEPALA semua submodula - itu adalah pertanyaan yang bagus.
Saya cukup yakin bahwa git
tidak memiliki perintah untuk ini secara internal. Untuk melakukannya, Anda perlu mengidentifikasi apa sebenarnya HEAD untuk submodule. Itu bisa sesederhana seperti mengatakan master
adalah cabang yang paling up to date, dll ...
Setelah ini, buat skrip sederhana yang melakukan hal berikut:
- periksa
git submodule status
repositori "yang dimodifikasi". Karakter pertama dari garis keluaran menunjukkan ini. Jika sub-repo diubah, Anda mungkin TIDAK ingin melanjutkan.
- untuk setiap repo yang terdaftar, masukkan ke direktori itu dan jalankan
git checkout master && git pull
. Periksa kesalahan.
- Pada akhirnya, saya sarankan Anda mencetak tampilan kepada pengguna untuk menunjukkan status submodul saat ini - mungkin meminta mereka untuk menambahkan semua dan melakukan?
Saya ingin menyebutkan bahwa gaya ini sebenarnya bukan untuk apa git submodules dirancang. Biasanya, Anda ingin mengatakan "LibraryX" ada di versi "2.32" dan akan tetap seperti itu sampai saya kirim ke "upgrade".
Artinya, dalam arti tertentu, apa yang Anda lakukan dengan skrip yang dijelaskan, tetapi hanya secara otomatis. Diperlukan perawatan!
Pembaruan 2:
Jika Anda berada di platform windows, Anda mungkin ingin melihat menggunakan Python untuk mengimplementasikan skrip karena sangat mampu di bidang ini. Jika Anda menggunakan unix / linux, maka saya sarankan hanya bash script.
Perlu klarifikasi? Cukup kirim komentar.