Kami menggunakan git untuk melacak perubahan di /etc/
server kami.
Administrator bekerja sebagai root ketika mengubah file di / etc /, dan karenanya komit mereka memiliki penulis
root <root@machinename>
Ini tidak terlalu memuaskan karena Anda tidak dapat melihat admin mana yang benar-benar melakukan perubahan.
Apa yang bisa kita lakukan untuk mendapatkan nama admin asli di log git? Saya tidak berpikir bahwa menjaga klon lokal repositori dapat dilakukan karena kita sering berubah secara interaktif sampai sesuatu bekerja, dan siklus perubahan-komit-tekan-lihat-Koreksi-ulang tidak akan membantu di sini.
etckeeper
, itu mengurus gotcha aneh seperti ini di versi / dll. Juga mulai menggunakan akun per pengguna dansudo
.Jawaban:
Nama git author dan committer dapat dipengaruhi oleh variabel lingkungan
GIT_COMMITTER_NAME
,GIT_COMMITTER_EMAIL
,GIT_AUTHOR_NAME
danGIT_AUTHOR_EMAIL
.Sekarang triknya adalah mengirimkan variabel-variabel itu ke server jarak jauh ketika terhubung melalui SSH:
Tentukan dan ekspor variabel dalam
~/.bashrc
file Anda :Secara otomatis mengirim mereka dengan koneksi SSH dengan menyesuaikan
~/.ssh/config
:LANG
danLC_*
tidak perlu, tetapi Debian memiliki ssh_config default mereka, jadi saya pikir saya harus mengirimkannya jugaDi server jarak jauh, sesuaikan konfigurasi sshd di
/etc/ssh/sshd_config
untuk menerimaGIT_*
variabel lingkungan:Voila -
git commit
sebagai root di/etc/
mengarah ke:Dalam kasus kesalahan serverf beberapa waktu di masa depan: http://cweiske.de/tagebuch/carry-git-settings.htm
sumber
Pertama, dan tidak terkait dengan pertanyaan Anda, saya akan mendesak Anda untuk segera berhenti menggunakan
root
loginsu
dan menggunakan login pengguna dansudo
sebagai gantinya. Batasiroot
login Anda hanya untuk konsol, atau bahkan tidak untuk itu.Yang mengatakan,
git commit
memiliki--author
opsi yang dapat membantu Anda di sana:Anda juga dapat dengan hati-hati menggunakan variabel lingkungan per pengguna untuk mengatur
GIT_AUTHOR_NAME
danGIT_AUTHOR_EMAIL
variabel. Dalam log, akan muncul penulis yang berbeda dan komiter yang sama (root@host
), tetapi itu akan memberi Anda lebih banyak audit. Tentu saja itu berarti Anda mempercayai admin Anda untuk menjaga variabel tetap utuh. Karena masing-masing menggunakan shell tertentu, mereka bisasudo
me-root dan sumber file dengangit
variabel spesifik mereka , mengidentifikasi masing-masing berbeda pada komit. Tidak terlalu praktis, tetapi Anda bahkan dapat mengotomatiskannya dengan skrip.EDIT: Tentu saja pendekatan yang lebih baik seperti yang ditunjuk oleh @ScottPack adalah menggunakan sistem manajemen konfigurasi seperti Wayang atau Koki dan menggunakan git untuk melacak perubahan pada server pusat dan bukan pada server nyata sehingga setiap admin dapat memiliki copy pekerjaan konfigurasi.
sumber
--author
tentu saja mungkin tetapi orang tidak menggunakannya dalam alur kerja normal mereka karena terlalu banyak untuk ditulis. Pada ide kedua Anda untuk menggunakan sudo: Saya salah satu dari orang-orang yang menganggap sudo berbahaya dan lebih suka menggunakan akses ssh root dengan kunci ssh saja. Dan ya, kami mempercayai admin kami.sudo
Anda memaksa pengguna untuk mengetikkan kata sandi (bahkan jika dia menggunakan kunci ssh untuk login sebagai penggunanya) dan Anda dapat mengontrol apa yang dapat dijalankan pengguna dan terutama Anda memiliki jejak audit tentang siapa yang telah melakukan apa. Tapi semua orang berhak atas pendapat mereka sendiri.sudo
untuk memaksa pengguna memasukkan kata sandi untuk setiap perintah (timestamp_timeout = 0
). Mungkin tidak cocok untuk pengembangan dan pementasan kotak tetapi tentu cocok untuk produksi. IMHO, berdasarkan pada konsensus SF, Anda harus memikirkan kembali pandangan Andasudo
. Salah satu hal hebat tentang SF adalah memiliki komunitas teman sebaya yang benar-benar tahu sh * t :-).Dengan dempul Anda dapat mengatur ini di bawah "Koneksi -> Data -> Variabel Lingkungan".
Mereka juga ada setelah '
su
' root.sumber
Jika Anda kebetulan menyediakan akun pengguna di server Anda menggunakan kunci ssh, Anda sebenarnya dapat melampirkan variabel lingkungan ke kunci yang diotorisasi pada waktu setup - misalnya di ~ bob / .ssh / official_keys
Dengan cara ini ketika pengguna SSH di dalamnya secara otomatis memiliki pengaturan envs ini - tidak perlu bagi mereka untuk meneruskannya dari klien lokal. Poin bonus jika Anda sudah memiliki info ini dan menghasilkan konfigurasi otor_keys dari sistem manajemen konfigurasi.
Catatan:
PermitUserEnvironment yes
Persyaratan di atas memerlukan sshd_configsumber
Jika Anda menggunakan
sudo
dan non-root Anda memiliki direktori home mereka terpasang:git -c include.path=<file>
akan menyertakan konfigurasi dalam<file>
.Untuk secara otomatis menarik file konfigurasi pengguna non-root saya, saya menggunakan
bash
alias:Lalu saya gunakan
gsudo
sebagai ganti darigit
keduanya:Periksa apakah konfigurasi memang sedang diimpor:
sumber
Selain jawaban coredump, Anda juga dapat mengatur opsi-opsi ini dalam
.git/config
file dalam copy pekerjaan repositori Anda (dengan tangan, atau menggunakangit config
perintah.Lihat
man git-config
untuk info lebih lanjut tentang perintah dan hal-hal keren yang dapat Anda lakukan dengannya.sumber