bashプロファイルをバージョン管理するにはどうすればよいですか?


10

だから私はバージョン管理にとても慣れていて、私のbashプロファイルのバージョンの追跡を開始しようと考え~/.bash_profileました。GitHubでさまざまなエイリアスなどを共有できるという追加の利点があります。

私の.bash_profileファイルをホームディレクトリに残す必要があると仮定すると(通常のファイルのように単独で追跡するためにディレクトリにラップすることはできません)、これを行うための最良の方法は何ですか?ホームディレクトリでgit repoを初期化したくないので、存在する他のすべてのファイルを無視する必要があります。

では、何が良い解決策となるのでしょうか?

別のディレクトリにコピーを作成し、時々それを更新/コミットできると思いますが、実装されたディレクトリ内の単一のファイルをバージョン管理するための良い方法があるかどうか知りたいですか?


8
シンボリックリンクはあなたの友達です。
Blrfl 2017

回答:


10

Afaik、これを行うには通常2つの方法があります:a)シンボリックリンクb)同期スクリプト。どちらの場合も、バージョンを管理するために別のリポジトリ(dotfile以下に名前を付けます)を作成する必要がありますbash_profile

シンボリックリンクを使用する

bash_profileバージョン管理されたディレクトリ(を含む.git)に 移動します。これ$HOME/.bash_profileはソフトリンクです⇢ $HOME/dotfile/bash_profile

$HOME/dotfile/bash_profile実際の場所です。例としてholman dotfilebash_profile参照してください。

同期スクリプトを使用する

bash_profileあなたのHOMEディレクトリに残りますが、それは「最新」のコピーにすぎません。最新はbash_profileまだ生きてい$HOME/dotfileます。

ええ、それはコピーと貼り付けのアプローチです。これがDRY作業syncing scriptからあなたを救うためにいくつかが必要な理由です。良い例としてmathiasbynens dotfilesをご覧ください。彼のhttps://github.com/mathiasbynens/dotfiles/blob/master/bootstrap.shsyncing script

さらに

あなたが疑うように:

設定されたディレクトリ内の単一のファイルをバージョン管理するための良い方法があるかどうか知りたい

単一のファイルをバージョン管理することはあまり意味がありません。コピー&ペーストするか、それを一部のクラウドドライブにドロップするだけで、面倒を大幅に軽減できます。

本当のポイントは、とき物事は、このようにスケールされませんということですdotfiles、あなたの中に$HOME育つバージョンテキストエディタのconfig(発言権を制御する場合、vimrc)は、使用時にSSHリモートで複数のシェルで動作するように、あなたが持つかもしれませんzshrcbashrcfishrc

つまり、長期的には、すべてのをバージョン管理したい場合がありますdotfileGithubのdotfileは良い出発点です。


1
これまでにシンボリックリンクについて聞いたことがありません。それがまさに私が探していたものです。ありがとう!
elliotwhitehead 2017

非常に役立つ回答をありがとう。これと他のdotfilesをリポジトリに置くための他の多くの良いアイデアはここにあります:dotfiles.github.io
kevinmicke

@kevinmickeうれしい:)
Xlee

2

ホームディレクトリでgit repoを初期化したくないので、存在する他のすべてのファイルを無視する必要があります。

何故なの?ホームディレクトリ内のファイルを追跡するため、ホームディレクトリもバージョン管理下にある必要があります。

これは、ホームディレクトリがgitリポジトリである必要があるという意味ではありません。説明させてください:

gitリポジトリは2つの部分で構成されています:作業ツリー(もちろん、それがベアリポジトリでない場合)と.git「データベース」ディレクトリです。通常、後者は前者の(非表示の)サブディレクトリにすぎませんが、厳密には必要ありません。gitは、分離された作業ツリーの使用をサポートしています。したがって、ホームディレクトリをバージョン管理下に保つことができますが、.gitツール(vim、emacsなど)やgit自体を混乱させる可能性のあるディレクトリをホームディレクトリに含める必要はありません。

セットアップ:

cd ~
mkdir .dotfiles
cd .dotfiles
git init .

これで~/.dotfiles/.gitディレクトリができました。これを使用しますが、ホームディレクトリを作業ツリーとして指定します。これにはかなり長いコマンドラインが必要なので、エイリアスは良い考えです:

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

これを使用するにはgit、たとえばの代わりに上記のエイリアスを使用しdotfiles statusます。

利点:

  • 他のツールは必要ありません。gitのみです
  • シンボリックリンク地獄/非同期状態の可能性なし
  • ホームの下のサブディレクトリにあるgitリポジトリは影響を受けません

私はこれをこのブログの投稿(いくつかの追加情報があります)から取得し、問題なく使用しています。私はしませんが、単純な行*.gitignore追加するだけで、追跡されていない可能性のある大量のファイルを取り除くことができ、追加するつもりのないファイルをリポジトリに追加しないように少し保護することができます。


いい視点ね!また、既存のgit *エイリアスを再定義する必要があるかもしれません。
Xlee

1

別の解決策は、特定の構成を(独自のエイリアスの設定または独自の関数の定義として)とは異なるファイルにデポートすることです.bash_profile。この方法では、特定の構成のみがバージョン管理され、からソースを取得するだけで済みます.bash_profile

手動で行う

この.bash_profile拡張ファイルに名前が付けられbash_profile_ext/path/to/bash/profile/ext/ディレクトリに含まれているとします。

.bash_profileファイルの最後には、次のものがあります。

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

そして、あなたの/path/to/bash/profile/extディレクトリだけがバージョン管理されます。

サードパーティのアプリを使用してそれを行う

さらに簡単に(私は推測しますが:-))、特定のプロファイル構成のみに焦点を当てることで、シェルプロファイルの管理に役立つshprofileを開発しています。shprofileを使用すると、特定のすべてのプロファイル構成を単一のディレクトリに定義して、バージョン管理することができます。同じユーザーの複数のプロファイルを管理することもできます。

繰り返し.bash_profileますが、すべての構成をバージョン管理する必要はなく、追加した値のみをバージョン管理する必要があります。


0

企業レベルのIT構成管理では、多くがPuppetを使用しています。コスト抑​​制と信頼性の尺度として、Puppetをクライアントに推奨します。ここのラボでは、それを単純に保ちます。

メインリポジトリには、クラッシュしたシステムを完全に再構築するため、または新しいユーザーアカウントを構築するために必要なファイルが含まれており、バージョン管理はいくつかの場面で役立ちました。gitがそれらを無視するように構成されていない限り、ピリオドで始まるファイルとディレクトリでGitは問題ありません。

これらは、システムおよびアプリケーションのインストールと構成のためのリポジトリパスです。

knowledge.resources / install.linux / std.fedora.dnf.sh(dnfインストール)knowledge.resources / install.linux / font.install.info.te(フォントインストール)knowledge.resources / install.linux / std.fedora。 te(その他のインストールと構成)

これらは一般的なユーザー構成ファイルです。

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

これらはサーバー上のリモートアカウント用です。

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

これらは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

私は、use.ls.al.to.see.dot.files.hereと呼ばれるサイズがゼロのファイルを使用して、ディレクトリが空に見えるだけであることを思い出させます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.