Bagaimana cara saya mengontrol versi profil bash saya?


11

Jadi saya sangat nyaman dengan kontrol versi, dan hanya berpikir untuk mulai melacak versi profil bash saya: ~/.bash_profiledengan manfaat tambahan untuk dapat berbagi berbagai alias saya dan semacamnya di GitHub.

Dengan asumsi bahwa file .bash_profile saya perlu tetap berada di direktori home saya (saya tidak dapat membungkusnya dalam direktori untuk melacaknya sendiri seperti file normal), apa cara terbaik untuk melakukan ini? Saya tidak ingin menginisialisasi git repo di direktori home saya, dan harus mengabaikan semua file yang ada.

Jadi apa solusi yang bagus?

Saya kira saya bisa membuat salinannya di direktori yang terpisah dan memperbaruinya / mengkomitnya dari waktu ke waktu, tapi saya ingin tahu apakah ada cara yang baik untuk mengontrol versi file tunggal dalam direktori yang dihuni?


8
Tautan simbolik adalah teman Anda.
Blrfl

Jawaban:


10

Afaik, biasanya ada dua cara untuk melakukan ini: a) tautan simbolik b) menyinkronkan skrip. Dalam kedua kasus, Anda harus membuat repo lain (beri nama di dotfilebawah) untuk bash_profiledikontrol versi.

Gunakan tautan simbolis

bash_profiledipindahkan ke direktori terkontrol versi Anda (berisi .git), $HOME/.bash_profileadalah tautan lunak ⇢ $HOME/dotfile/bash_profile.

$HOME/dotfile/bash_profileDi sinilah tempat tinggal Anda yang sebenarnya bash_profile, lihat holman dotfile sebagai contoh.

Gunakan skrip sinkronisasi

bash_profiletetap di HOMEdir Anda tetapi hanya salinan yang 'terbaru'. Yang terbaru bash_profilemasih ada di $HOME/dotfile.

Yap, ini pendekatan salin dan tempel, ini sebabnya Anda perlu beberapa syncing scriptuntuk menyelamatkan Anda dari pekerjaan KERING . lihat mathiasbynens dotfiles sebagai contoh yang baik. Nya syncing script https://github.com/mathiasbynens/dotfiles/blob/master/bootstrap.sh .

Selanjutnya

Seperti yang Anda duga:

Saya ingin tahu apakah ada cara yang baik untuk mengontrol versi file tunggal dalam direktori yang dihuni

Versi mengendalikan satu file tidak masuk akal, salin & tempel, atau cukup masukkan ke beberapa drive cloud menghemat banyak masalah.

Titik sebenarnya adalah bahwa hal tidak mendapatkan skala cara ini, ketika dotfilesdi Anda $HOMEtumbuh, ketika Anda ingin kontrol versi favorit Anda config teks editor (misalnya vimrc), ketika Anda menggunakan SSHuntuk bekerja dengan beberapa shell jarak jauh, Anda mungkin memiliki zshrc, bashrc, fishrcdll.

Ini berarti dalam jangka panjang Anda mungkin ingin mengontrol semua versi Anda dotfile. Dotfile Github adalah titik awal yang baik.


1
Belum pernah mendengar tautan simbolis sebelumnya! Itulah tepatnya yang saya cari. Terima kasih!
elliotwhitehead

Terima kasih atas jawaban yang sangat membantu. Banyak ide bagus lainnya untuk meletakkan ini dan dotfiles lain dalam repo dapat ditemukan di sini: dotfiles.github.io
kevinmicke

@kevinmicke Senang membantu :)
Xlee

2

Saya tidak ingin menginisialisasi git repo di direktori home saya, dan harus mengabaikan semua file yang ada.

Kenapa tidak? Anda ingin melacak file di direktori home Anda, sehingga direktori home Anda juga harus di bawah kontrol versi.

Itu tidak berarti bahwa direktori home Anda perlu repositori git. Biarkan saya jelaskan:

repositori git terdiri dari dua bagian: pohon yang berfungsi (kecuali tentu saja repositori kosong) dan .gitdirektori "database". Biasanya nanti hanyalah sub direktori (tersembunyi) dari yang pertama, tetapi itu tidak sepenuhnya diperlukan. git mendukung menggunakan pohon kerja yang terpisah . Dengan demikian Anda dapat menyimpan direktori home Anda di bawah kontrol versi tetapi tidak perlu memilikinya berisi .gitdirektori yang dapat membingungkan alat (vim, emacs, ...) atau git itu sendiri.

Pengaturan:

cd ~
mkdir .dotfiles
cd .dotfiles
git init .

Sekarang ada ~/.dotfiles/.gitdirektori. Gunakan itu tetapi tentukan direktori home sebagai tree yang berfungsi. Ini membutuhkan baris perintah yang cukup panjang, sehingga alias adalah ide yang bagus:

alias dotfiles='git --git-dir ~/.dotfiles/.git --work-tree=$HOME'

Untuk menggunakannya cukup gunakan alias di atas, bukan git, misalnya dotfiles status.

Manfaat:

  • tidak perlu alat lain, hanya git
  • tidak ada symlink neraka / situasi sinkronisasi tidak memungkinkan
  • repositori git di sub direktori di bawah home tidak terpengaruh sama sekali

Saya mendapatkan ini dari posting blog ini (yang memiliki beberapa info tambahan) dan saya menggunakannya tanpa masalah. Saya tidak, tetapi dengan satu baris sederhana *di dalam .gitignoreAnda dapat menyingkirkan sejumlah besar file yang tidak terlacak dan menjaga diri Anda sedikit terhadap penambahan file ke repositori yang tidak dimaksudkan untuk ditambahkan.


Poin bagus! Selain itu mungkin perlu mendefinisikan ulang beberapa git * alias yang sudah ada saya kira.
Xlee

1

Solusi lain adalah dengan mendeportasi konfigurasi spesifik Anda (seperti mengatur alias Anda sendiri atau mendefinisikan fungsi Anda sendiri) ke file yang berbeda dari .bash_profile. Dengan cara ini, hanya konfigurasi spesifik Anda yang akan diversi dan Anda hanya perlu mengambilnya dari .bash_profile.

Lakukan secara manual

Katakanlah .bash_profilefile ekstensi ini dinamai bash_profile_extdan dimasukkan ke dalam /path/to/bash/profile/ext/direktori:

Di akhir .bash_profilefile Anda, Anda akan memiliki:

source /path/to/bash/profile/ext/bash_profile_ext

Dan hanya /path/to/bash/profile/extdirektori Anda yang akan diversi.

Lakukan dengan menggunakan aplikasi pihak ketiga

Bahkan lebih sederhana (saya kira :-)), saya sedang mengembangkan shprofile yang membantu Anda untuk mengelola profil shell Anda, dengan hanya berfokus pada konfigurasi profil spesifik Anda. shprofile memungkinkan Anda untuk mendefinisikan semua konfigurasi profil spesifik Anda ke dalam satu direktori, yang kemudian dapat diversi. Catatan Anda juga dapat mengelola beberapa profil untuk pengguna yang sama.

Sekali lagi, tidak perlu mengubah versi semua .bash_profilekonfigurasi Anda , tetapi hanya nilai tambah Anda.


0

Untuk manajemen konfigurasi TI tingkat perusahaan, banyak yang menggunakan Wayang. Saya merekomendasikan Wayang kepada klien sebagai pengendalian biaya dan keandalan. Di sini, di lab, kami membuatnya sederhana.

Repositori utama kami berisi file yang diperlukan untuk membangun kembali sistem yang macet atau membangun akun pengguna baru, dan kontrol versi telah berguna pada beberapa kesempatan. Git baik-baik saja dengan file dan direktori yang dimulai dengan periode selama git tidak dikonfigurasi untuk mengabaikannya.

Ini adalah jalur repositori untuk instalasi dan konfigurasi sistem dan aplikasi.

knowledge.resources / install.linux / std.fedora.dnf.sh (instalasi dnf) knowledge.resources / install.linux / font.install.info.te (instalasi font) knowledge.resources / install.linux / std.fedora. te (instal dan konfigurasi lainnya)

Ini adalah file konfigurasi pengguna umum.

startup / linux.basic.user / .bash_profile startup / linux.basic.user / .bashrc startup / linux.basic.user / .vimrc startup / linux.basic.user / .gitmessage startup / linux.basic.user / .gitconfig startup / linux.basic.user / use.ls.al.to.see.dot.files.here

Ini untuk akun jarak jauh di server.

startup / linux.remote / .bash_profile startup / linux.remote / .bashrc startup / linux.remote / .vimrc startup / linux.remote / .gitmessage startup / linux.remote / .gitconfig startup / linux.remote / use.ls. al.to.see.dot.files.here

Ini untuk akun root.

startup / linux.root / .bash_profile startup / linux.root / .bashrc startup / linux.root / .vimrc startup / linux.root / use.ls.al.to.see.dot.files.here

Saya menggunakan file ukuran nol yang disebut use.ls.al.to.see.dot.files.here untuk mengingatkan saya bahwa direktori tersebut hanya tampak kosong.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.