3

私たちは組み込み ARM Linux システムを扱っており、カスタム ハードウェアを制御する SBC ベースの製品をいくつか持っています。そのため、カスタム カーネル ドライバーを開発し、場合によっては既存のドライバーを適合させる必要があります。Subversion の使用を開始して以来、「ベンダー ブランチ」を使用してバニラ カーネルを使用し続け、各製品のブランチを作成して、SBC に必要なパッチを適用し、独自の変更を加えるという戦略が選択されました。https://stackoverflow.com/q/2312984/1007502で提案されているものに非常に似ています

ありがたいことに、数か月前にプロジェクトを git に移行することを決定したため、開発チーム間でプロジェクトを共有するために gitolite サーバーをセットアップし、必要に応じて SVN からプロジェクトを移行し、git をより快適に使用できるようにしました。Linux カーネルの特殊なケースでは、リモートとして gitolite サーバーを使用してプロジェクトを開発するオプションがあることは興味深いと思いますが、公式ツリーから新しいカーネルを取得して、最終的に何か貢献できるようにしたいと考えています。それができる状態になったら元に戻します。

私自身のマシンでは、公式のカーネル ツリーを git clone して製品のプライベート ブランチを作成し、必要に応じて新しいカーネルにリベースする方法を確認できます (こちらのように)。しかし、開発者が公式のカーネルリポジトリの代わりにプッシュ/プルできるように、公式のカーネルツリーをgitoliteにインポートする方法と、後者との同期を維持する方法について少し迷っています。

これは、私たちのマシンの公式ツリーから更新を取得し、それらをプライベート gitolite サーバーにプッシュすることの問題ですか、それとももっと直接的な方法がありますか?

編集:(質問を明確にする)
主な問題は:追跡されていないコードをgitoliteにプッシュするために空のリポジトリを初期化する方法は知っていますが、公式などの別のgitリポジトリからクローンしたものに対してそれを行う方法がわかりませんカーネルツリー。

自分のマシンにそのクローンを作成したら、それをプライベート gitolite サーバーに移動する手順は何ですか?

では、この「プライベート」なカーネル ツリーを公式のカーネル ツリーと同期させるにはどうすればよいのでしょうか。

開発者はプライベート ツリーにのみプッシュし、最終的には公式ツリーにのみパッチを送信する必要があるという考えです。

4

2 に答える 2

2

元のカーネルソースのクローンを作成します。

git clone $KERNEL_URL

プライベートgitoliteリポジトリのリモートを追加し、gitoliteという名前を付けます。

git remote add gitolite $GITOLITE_URL

プライベートブランチを作成する

git checkout -b our-branch

プライベートブランチをプライベートgitoliteリポジトリにプッシュします

git push gitolite our-branch

完了です。

これは、マシンの公式ツリーから更新をフェッチして、それらをプライベートgitoliteサーバーにプッシュバックする問題ですか、それともより直接的なアプローチがありますか?

それは基本的にそれです。

于 2012-05-16T22:09:47.207 に答える
2

私が理解したことから、あなたは興味のある2つのリモコンを持っています:

  • メインのカーネル リポジトリ (たとえば、Github にあるもの)
  • あなたの gitolite リポジトリ

これは実際には非常に簡単です。ローカル リポジトリに 2 つのリモートを追加するだけで済みます (おそらく gitolite 用にすでにあるはずです) git remote add ...。次に、1 つのリモートからデータを取得し、それらをコードにマージして、満足したら、それを別のリモートにプッシュする必要があります。このプロセスは、バニラカーネルから更新を取得して独自のリモートに適用するか、その逆の方法とまったく同じです...

...ただし、(もちろん) 自分のものではないリポジトリにプッシュすることはできません。したがって、バニラ カーネルに貢献する場合は、プル リクエストを送信して、Linus ま​​たはその使用人の 1 人にリクエストを受け入れるよう説得する必要があります。(注: Linus は github プル リクエストを受け付けていません)

于 2012-05-16T22:12:44.530 に答える