Làm thế nào tôi nên phiên bản kiểm soát hồ sơ bash của tôi?


10

Vì vậy, tôi rất thoải mái với việc kiểm soát phiên bản và chỉ nghĩ sẽ bắt đầu theo dõi các phiên bản của hồ sơ bash của mình: ~/.bash_profilevới lợi ích bổ sung là có thể chia sẻ các bí danh khác nhau của tôi và như vậy trên GitHub.

Giả sử rằng tệp .bash_profile của tôi cần nằm trong thư mục chính của tôi (tôi không thể gói nó trong một thư mục để theo dõi nó một mình như một tệp bình thường), cách tốt nhất để làm điều này là gì? Tôi không muốn khởi tạo một git repo trong thư mục nhà của mình và phải bỏ qua mọi tệp khác có mặt.

Vì vậy, những gì có thể là một giải pháp tốt?

Tôi cho rằng thỉnh thoảng tôi có thể tạo một bản sao của nó trong một thư mục riêng và cập nhật / cam kết nó, nhưng tôi tò mò liệu có cách nào tốt để phiên bản kiểm soát một tệp trong một thư mục được điền không?


8
Liên kết tượng trưng là bạn bè của bạn.
Blrfl

Câu trả lời:


10

Afaik, thông thường có hai cách để làm điều này: a) liên kết tượng trưng b) tập lệnh đồng bộ hóa. Trong cả hai trường hợp, bạn phải tạo một repo khác (đặt tên dotfilebên dưới) bash_profileđể được kiểm soát phiên bản.

Sử dụng các liên kết tượng trưng

bash_profileđược chuyển đến thư mục kiểm soát phiên bản của bạn (có chứa .git), $HOME/.bash_profilelà một liên kết mềm $HOME/dotfile/bash_profile.

$HOME/dotfile/bash_profilelà nơi thực tế của bạn bash_profilecư trú, xem holman dotfile làm ví dụ.

Sử dụng đồng bộ hóa tập lệnh

bash_profilevẫn ở trong HOMEthư mục của bạn nhưng nó chỉ là một bản sao của 'mới nhất'. Mới nhất bash_profilevẫn còn sống trong $HOME/dotfile.

Đúng, đó là một cách tiếp cận sao chép và dán, đây là lý do tại sao bạn cần một số syncing scriptđể cứu bạn khỏi công việc DRY . xem dotfiles mathiasbynens là một ví dụ tốt. syncing script Https://github.com/mathiasbynens/dotfiles/blob/master/bootstrap.sh của anh ấy .

Hơn nữa

Như bạn nghi ngờ:

Tôi tò mò liệu có cách nào tốt để phiên bản kiểm soát một tệp trong thư mục được điền không

Phiên bản kiểm soát một tệp không có ý nghĩa nhiều, sao chép và dán hoặc chỉ thả nó vào một số ổ đĩa đám mây giúp bạn tránh được nhiều rắc rối.

Vấn đề thực sự là điều không được thu nhỏ lại theo cách này, khi dotfilestrong bạn $HOMEphát triển, khi bạn muốn kiểm soát phiên bản yêu thích cấu hình soạn thảo văn bản của (nói của bạn vimrc), khi bạn sử dụng SSHđể làm việc với nhiều vỏ từ xa, bạn có thể có zshrc, bashrc, fishrcVân vân.

Điều này có nghĩa là về lâu dài bạn có thể muốn phiên bản kiểm soát tất cả các dotfiles của bạn . Dotfile của Github là một điểm khởi đầu tốt.


1
Chưa từng nghe về các liên kết tượng trưng trước đây! Đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn!
elliotwhitehead

Cảm ơn câu trả lời rất hữu ích. Rất nhiều ý tưởng hay khác để đưa cái này và các dotfiles khác vào một repo có thể được tìm thấy ở đây: dotfiles.github.io
kevinmicke

@kevinmicke Vui mừng vì nó giúp :)
Xlee

2

Tôi không muốn khởi tạo một git repo trong thư mục nhà của mình và phải bỏ qua mọi tệp khác có mặt.

Tại sao không? Bạn muốn theo dõi một tập tin trong thư mục chính của bạn, do đó, thư mục chính của bạn cũng phải được kiểm soát phiên bản.

Điều đó không có nghĩa là thư mục chính của bạn cần phải là một kho lưu trữ git. Hãy để tôi giải thích:

kho git bao gồm hai phần: một cây làm việc (tất nhiên trừ khi đó là kho lưu trữ trần) và thư mục .git"cơ sở dữ liệu". Thông thường sau này chỉ là một thư mục con (ẩn) của cái trước, nhưng điều đó không thực sự cần thiết. git hỗ trợ sử dụng một cây làm việc tách ra . Do đó, bạn có thể giữ thư mục chính của mình dưới sự kiểm soát phiên bản nhưng không cần phải chứa .gitthư mục đó có thể gây nhầm lẫn các công cụ (vim, emacs, ...) hoặc git chính nó.

Đang cài đặt:

cd ~
mkdir .dotfiles
cd .dotfiles
git init .

Bây giờ có một ~/.dotfiles/.gitthư mục. Sử dụng nhưng chỉ định thư mục chính là cây làm việc. Điều này đòi hỏi một dòng lệnh khá dài, do đó, một bí danh là một ý tưởng tốt:

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

Để sử dụng nó, chỉ cần sử dụng bí danh trên thay vì git, ví dụ dotfiles status.

Những lợi ích:

  • không có công cụ cần thiết khác, chỉ cần git
  • không có địa chỉ symlink / không có tình huống đồng bộ hóa nào
  • kho git trong thư mục con bên dưới nhà không bị ảnh hưởng theo bất kỳ cách nào

Tôi đã nhận được điều này từ bài đăng trên blog này (có thêm một số Infos) và đang sử dụng nó mà không gặp vấn đề gì. Tôi không, nhưng với một dòng đơn giản *trong .gitignorebạn có thể thoát khỏi số tiền có thể rất lớn các tập tin untracked và bảo vệ cho mình một chút so với thêm các tập tin vào kho mà không có nghĩa là để được thêm vào.


Điểm tốt! Bên cạnh đó có thể cần phải xác định lại một số bí danh git * hiện có mà tôi đoán.
Xlee

1

Một giải pháp khác là trục xuất cấu hình cụ thể của bạn (như đặt bí danh của riêng bạn hoặc xác định các chức năng của riêng bạn) thành một tệp khác .bash_profile. Bằng cách này, chỉ có cấu hình cụ thể của bạn sẽ được phiên bản và bạn chỉ phải lấy nguồn từ .bash_profile.

Làm thủ công

Giả sử .bash_profiletệp mở rộng này được đặt tên bash_profile_extvà chứa trong /path/to/bash/profile/ext/thư mục:

Vào cuối .bash_profiletập tin của bạn, bạn sẽ có:

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

Và chỉ /path/to/bash/profile/extthư mục của bạn sẽ được phiên bản.

Làm điều đó bằng cách sử dụng ứng dụng của bên thứ ba

Thậm chí đơn giản hơn (tôi đoán :-)), tôi đang phát triển shprofile giúp bạn quản lý hồ sơ shell của mình, chỉ bằng cách tập trung vào cấu hình hồ sơ cụ thể của bạn. shprofile cho phép bạn xác định tất cả cấu hình hồ sơ cụ thể của bạn vào một thư mục duy nhất, sau đó có thể được phiên bản. Lưu ý bạn cũng có thể quản lý một số hồ sơ cho cùng một người dùng.

Một lần nữa, không cần phiên bản tất cả .bash_profilecấu hình của bạn , mà chỉ cần các giá trị gia tăng của bạn.


0

Đối với quản lý cấu hình CNTT cấp doanh nghiệp, nhiều người đang sử dụng Puppet. Tôi đề nghị Puppet cho khách hàng như một biện pháp ngăn chặn chi phí và độ tin cậy. Ở đây trong phòng thí nghiệm, chúng tôi giữ cho nó đơn giản.

Kho lưu trữ chính của chúng tôi chứa các tệp cần thiết để xây dựng lại hoàn toàn hệ thống bị sập hoặc xây dựng tài khoản người dùng mới và kiểm soát phiên bản rất hữu ích trong nhiều trường hợp. Git vẫn ổn với các tệp và thư mục bắt đầu bằng một khoảng thời gian miễn là git không được cấu hình để bỏ qua chúng.

Đây là các đường dẫn kho lưu trữ để cài đặt và cấu hình hệ thống và ứng dụng.

kiến thức.resres te (cài đặt và cấu hình khác)

Đây là những tập tin cấu hình người dùng chung.

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 / .git khởi động / linux.basic.user / use.ls.al.to.see.dot.files.here

Đây là cho các tài khoản từ xa trên máy chủ.

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

Đây là cho tài khoản 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

Tôi sử dụng các tệp có kích thước không được gọi là use.ls.al.to.see.dot.files.here để nhắc nhở tôi rằng thư mục chỉ LOOKS trống.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.