私はSCCSを内部で使用している会社で、主なアプリケーションを開発しています。現在、StableとExperimentalの2つの開発ストリームがあります。 Stableには主にバグの修正が加えられており、Experimentalの問題も修正される可能性があります。実験的には、かなり大きな新機能が追加されています。gitを個人的に使用し、SCCSプロジェクト全体
私が気付いている主な問題は、Stableで働く開発者がExperimentalに変更を加えていないことです。 Experimentalで作業しているので、私は両方のブランチをマージする必要があります。
私はおよそ一年のために自分でGitリポジトリを使用してきた、そしてそれは、一方の分岐(安定的)で素晴らしい仕事だとして、私は次のことができます。これは、安定からの変更ですべての私のファイルを更新
git checkout master
<copy all Stable files over, which will add changes>
git commit -a -m "Updated files 06/19/2011"
git checkout New_Feature
git rebase master
。しかし、2つの開発ブランチを使用しているので、多くのマージ競合が発生しています。
#pragma ident "@(#)file1.c 1.233 06/17/11 Company_Experimental"
注バージョン番号(1.233)、日付、および企業/支店キーワード:これはSCCSはこのように、ソースファイルの先頭にメタデータを置くことに由来します。すべてのチェックイン時に日付とバージョン番号が変わり、支店はStableとExperimentalのアップデート間で切り替わります。私はファイルをチェックインするときに、いつチェックインするかによって、トップを破棄し、新しい値を持つように、トップにあるものは気にしません。
この行は常に一番上にある。トップラインを無視する方法はありますか、何らかの形でこのワークフローを管理しやすくして、開発ストリームを自分自身の作業とマージし、無意味なマージの競合をほとんど経験しないようにしてください。
注:私はすでにバージョン管理システムを変更しようとしていますが、私たちは多くの古いプログラマーが自分のやり方を変えようとしていません。回答しないでください。「あなたの会社はXに切り替える必要があります。私を信じて、私はあなたと一緒に100%です。
これは不思議でした。私はPro Gitの本を見てスクリプトを動作させる方法についてはっきりしていませんでした(純粋なgrepは失敗していました)が、これは完全に意味がありました。 –
文字列全体を消去する代わりに、拡張されていないsccsトークンで置き換えることができます。 –