2012-04-02 7 views
2

私たちは製品を開発しており、GitをSCMとして使用しています。各マイナーバージョンの製品は別々のブランチにあります。開発者として、マイナーバージョンごとに独自のデータベースを用意しています。私は個人的な設定ファイルも持っています。これはGitでは無視され、使用するデータベースを指定します。しかし、それはGitによって無視されるので、私が現在行っているブランチに関係なく同じままです。 configファイルがdb_1_2というデータベース(ブランチ1.2用)を使用するように指定されている場合、ブランチ1.3に切り替えると、configファイルはデータベースdb_1_2を依然として指しているためです。別のgitブランチに異なるプライベート設定ファイルを置くことはできますか?

私は現在、正しいデータベースを設定するためにブランチ識別子を読み込んで解析していますが、Git識別子は多くの種類のものがあります。から正しいブランチ名を解決してください。

私は製品自体に尋ねることができますが、古いバージョンのすべてに静的なgetVersion()メソッドがあるわけではありません。

私の質問はこれです:個人的な設定ファイルをどうにかしてブランチに所属させてもいいですか?リモート/中央リポジトリにプッシュすると最終製品にはなりませんか?

+0

良い質問をプッシュに副作用を回避する方法を見ることができません。私のアプローチは 'git branch'の出力を解析することですが、それはおそらくあなたがすでにやっていることでしょう。 – bitmask

+0

ええ、それは私が現在やっていることです。 "git name-rev --name-only HEAD"が "1.2"のようなものを生成するときにはうまくいきますが、特定のコミットをチェックアウトするときやバイセクショニングするときに、すべてがドレインになります。 –

+0

サブモジュールの使用を検討しましたか? – Nic

答えて

0

gitブランチの名前を付けて一連の設定ファイルを作成するのはどうですか?あなたが枝をチャンスとき、あなたはこのような何かを行うことができます。

また
ln -s configs/$(git symbolic-ref HEAD|cut -f3 -d/) myconfig.conf 

を、代わりに実行する:

git co -b $1 
ln -s configs/$1 myconfig.conf 

そしてそれをすべて:

git co -b branchname 

switchbranchスクリプトのような何かを作ります自動的になる。既存の設定がないブランチに切り替えると、空想的になり、テンプレート設定ファイルを作成することさえできます。

+0

興味深いですが、例えば二等分を扱うでしょうか? –

+0

おそらく...またはより正確には、助けなしにはありません。もし 'git bisect run ... 'を使って物事を処理するなら、あなたはおそらくスクリプト内の必要なロジックかもしれません。私は 'git bisect'が複数のブランチのコンテキストでどのように動作するかに精通していないので、ここでは推測しています。 – larsks

2

データベースがブランチに完全に関連している場合、無視された設定ファイル内のデータベースバージョンはなぜですか?ブランチからデータベースを判断する方法を求めていますが、ブランチの仕事全体は、ブランチに固有のコード状態を提供し、ブランチ内の他のすべてと一貫しています。構成ファイルからデータベース識別子を無視しないものに移動します。

+0

これは既に行われていますが、古いバージョンの製品では行われていません。ですから、古いバージョンをチェックアウトして、顧客からの騒ぎが何であるかを知る必要があるとき、コードベースはどのバージョンであるかのヒントを私に与えません。 –

+0

古いコードで、コードベースで何がどうなっているのかわからない場合は、その問題を解決する必要があります。おそらく、タグ付けされたものから始めて、管理されたソースやデータベースなど、一貫した構成を持つようにしてください。 – GoZoner

-1

ブランチ変更をテンプレートに反映させ、this my postのアイデアを使用して、ブランチに依存する部分にキーワードを追加し、これらの処理用にフィルタを変更することができますキーワード。すべてのチェンジのための支店であってもよい

git branch | grep "*"

git status | grep 'On branch'

git symbolic-ref -q HEAD(?)

git branch | sed --quiet 's/* \(.*\)/\1/p'

関連する問題