要件のタイトルを短くする方法がわかりません。意味がない場合は申し訳ありません。ここで説明します:
多くの人は、ドットファイルをbitbucketまたはgithubに配置して、後でインストールまたは構成しやすくするために、別のPC間で同期します。私も同じことをしましたが、何か特別なことをしたいのですが、mecurial/gitがどのように役立つかわかりません。
私が持っているもの:
私は3台のマシン、たとえばHome、Office、Clientを持っており、すべてLinux OSです(異なるディストリビューションである可能性があります)。例を簡単にするために、1つのファイル.zshrc
をリポジトリに入れたいとしましょう。問題は、3つのOSのシステム変数(またはその他の設定)が異なることです。例えば
- OfficeにJBOSSがインストールされているので、
.zshrc
JBOSS_HOME変数をエクスポートする必要があります。 - クライアントにOracleがインストールされている場合は、さまざまな変数のセットをエクスポートします。
- OfficeはHTTP_PROXYをエクスポートする必要がありますが、HOMEはエクスポートしません。クライアントもそれを必要としますが、プロキシ値が異なります。
今私がしたことは、それらのマシン固有の設定(主にエクスポート、エイリアスステートメント)を別のファイル、たとえばに抽出することmyVar.sh
です。の最後にソースを設定し.zshrc
ます。
したがって、3台のマシンには共通の部分(同じ.zshrc
)と異なる部分(myVar.sh
)があります。
私が欲しいもの:
どのマシンでも、良い設定が見つかったら、
.zshrc
ファイル(共通部分)を変更してプッシュします。変更は、他のマシンと簡単に同期できる必要があります(たとえば、プルによって)myVar.sh
HOMEの(別の部分)を変更してプッシュmyVar.sh
しても、OfficeマシンをプルしてもOfficeには影響しません。
私がしていること:
これで、bitBucketに1つのリポジトリがあり、3つのブランチ(H、O、C)があります。Home PCでは、Homeブランチで遊んでいます。Office、Clientについても同じです。
問題は、1台のPCで共通部分を変更した場合、その変更はそれ自体のブランチにあり、他の2台と同期するのが少し難しいことです。私はそれらのブランチをマージすることは決してないからです。
また、PCごとに異なるディレクトリをmkすることも考えています。例えば
/.zshrc
|--/HOME/myVar.sh
|--/Office/myVar.sh
|--/Client/myVar.sh
myVar.sh
シェルスクリプトを記述します。たとえば、$ HOSTをチェックして、どのディレクトリへの書き込みを決定します。しかし、それが私の目標を達成するための最良の方法であるかどうかは疑問です。そして、ドットファイルのディレクトリを見ると、3個すべての設定が表示されます。注意して、ファイルを読み取るために正しいものを入力する必要があります。
現実の世界では、共通部分には.zhsrc(tmux、vimrc、xdefault ..)よりもはるかに多くのものが含まれているため、別の部分も含まれます。
どういうわけか、リポジトリで部分的なブランチを作成したり、部分的なマージを実行したりできるかわかりません...
私はgitよりもはるかに多くのhgを使用していますが、hgで解決できる場合は、hgを使用します。そうでない場合は、gitも使用できます。クローン、プッシュ、プル、アップ、マージ、ciを除いて、Gitの経験はあまりありません。
さて、どうすればいいですか?
そして、これを読んでくれてありがとう...
別の部分についてもっと編集する
答えてくれてありがとう。上で述べたように、私の実際のマシンの別の部分は、ほど単純ではありませんmyVar.sh
。たとえば、会社のラップトップ(Office)をさまざまなクライアントに移動し(約6つのクライアントがあり、すべてのクライアントがPCを提供しているわけではありません。どこでもLinuxで作業できるので便利です)、それぞれのプリンターをカップごとに構成します。私もそれらの構成をリポジトリに入れます。ある日、システムを更新する必要がある場合、またはハードディスクに障害が発生した場合、それらのプリンターを非常に簡単にセットアップできたからです。別の部分に属する他のものですが、私は単に「xxxをソース」することはできません
トラックポイントのXorg.conf
.hgrcファイル(会社には独自のリポジトリ、uid、pwd、proxyがあります。)
いくつかの事前設定されたsystemdモジュール、基本的には.confファイル。ただし、マシン固有です。たとえば、自宅のラップトップ専用のradeon.confです。また、クライアントPCにはsystemdがまったくインストールされていません。
そのため、PC用に別のディレクトリを考えました。
私が今言ったように、私は3つのブランチを持っており、myConf
このディレクトリ内にgetConf.sh
、ドットファイルやさまざまなconfなどをコピーするためのディレクトリがありmyConf
ます。実際、getConf.sh
スクリプトはすべてのPCで同じではないため、は別の部分にも属しています。
したがって、この場合、 if-else/switch
thenは機能しない可能性があると思います。source
昨日、私は.zshrcを取得して、例を単純にしようとしました。それがあなたたちを誤解させるなら、それについて申し訳ありません。