repo/gitの使い方

閲覧: 3,327 回
最初の未読メッセージにスキップ

mizmit1222

未読、
2009/01/13 21:05:382009/01/13
To: 日本Androidの会
みずのです。こんにちは。

初歩的な質問なんですけど。repo/gitってどう使ったらいいんでしょう?

Androidのソースコードを落としてきて、ちょっと手を加えて自分専用
イメージをビルドしてます。

で、repo syncすると、手を入れた部分をうまくマージしてくれる時と、
エラーになっちゃう時があるんです。

Using Repo and Git
http://source.android.com/download/using-repo

ローカルでadd/commitすればいいのかなと思ったんですが、sync
するとコミットした変更がDiscardされてしまうんです。

こうやるといいよーみたいなアイディアを聞かせていただけると、
うれしいです。

ではでは。

まいむぞう

未読、
2009/01/14 2:39:242009/01/14
To: android-g...@googlegroups.com
まいむぞうです。

> ローカルでadd/commitすればいいのかなと思ったんですが、sync
> するとコミットした変更がDiscardされてしまうんです。
> こうやるといいよーみたいなアイディアを聞かせていただけると、
> うれしいです。

自分はgitは普段使っているけど、repoはandroidやって初めて使った、という程度のスキルですが、
repoって結局は「androidの長大なソースを複数のgitリポジトリに分割して、それを効率よく
バージョン管理するために、pythonで作ったgitラッパーユーティリティ的なモノ」だと
(勝手に)思っています。実際、repoの中ではgitをパイプ経由で操作しているみたいですし。

なので、みずのさんの使い方(ソースの一部を書き換えているが、その他は最新版を適用したい。本流へのパッチは今のところ考えていない。ということで良いでしょうか?)だと、初回のrepo
sync後に、gitとしてブランチを切って、自分の作業結果はgit add/git commitしつつ、git
fetchして最新版を保守していくのが良い気がします。
(と言いつつ、試してはいないので、間違っていたらごめんなさい)


手前味噌ですが、gitのまとめ記事をあげておきます。
http://fromnorth.blogspot.com/2008/06/git.html

--------------------------------------------------------------
大路裕介(おおみちゆうすけ)/まいむぞう
mail: mai...@gmail.com
skype: maimuzo
blog: http://fromnorth.blogspot.com/
service for rubyist: http://gemspec.info
for Android users: http://www.android-app.info/
--------------------------------------------------------------

2009/01/14 11:05 mizmit1222 <mizmi...@gmail.com>:

mizmit1222

未読、
2009/01/14 22:55:042009/01/14
To: 日本Androidの会
みずのです。ありがとうございます。

やっぱりブランチですよね。って、ドキュメントを読み直したら書いてあった。
http://source.android.com/download/using-repo

 Why use topic branches?
 Start a topic branch in your local work environment whenever you
 begin a change, for example when you begin work on a bug or new
feature.

こんな感じの操作でいいのかな?

$ repo start eda1
$ vi hoge/fuga/foo.java
$ git add hoge/fuga/foo.java
$ git commit

repoはプロジェクト単位と合計である全体、gitはサブディレクトリに降り
てから、みたいな使い分けかしら。

ひょっとして、git init / repo syncした直後の状態で、localmasterブ
ランチを作って、それからeda1とか作るようにして、初期状態を温存
した方がいいかしら。

もうちょっと遊んでみて、慣れたらまたTipsにでもまとめてみます。

ではでは。


On Jan 14, 4:39 pm, "まいむぞう" <maim...@gmail.com> wrote:
> まいむぞうです。
>
> > ローカルでadd/commitすればいいのかなと思ったんですが、sync
> > するとコミットした変更がDiscardされてしまうんです。
> > こうやるといいよーみたいなアイディアを聞かせていただけると、
> > うれしいです。
>
> 自分はgitは普段使っているけど、repoはandroidやって初めて使った、という程度のスキルですが、
> repoって結局は「androidの長大なソースを複数のgitリポジトリに分割して、それを効率よく
> バージョン管理するために、pythonで作ったgitラッパーユーティリティ的なモノ」だと
> (勝手に)思っています。実際、repoの中ではgitをパイプ経由で操作しているみたいですし。
>
> なので、みずのさんの使い方(ソースの一部を書き換えているが、その他は最新版を適用したい。本流へのパッチは今のところ考えていない。ということで良いでしょ うか?)だと、初回のrepo
> sync後に、gitとしてブランチを切って、自分の作業結果はgit add/git commitしつつ、git
> fetchして最新版を保守していくのが良い気がします。
> (と言いつつ、試してはいないので、間違っていたらごめんなさい)
>
> 手前味噌ですが、gitのまとめ記事をあげておきます。http://fromnorth.blogspot.com/2008/06/git.html
>
> --------------------------------------------------------------
> 大路裕介(おおみちゆうすけ)/まいむぞう
> mail: maim...@gmail.com
> skype: maimuzo
> blog:http://fromnorth.blogspot.com/
> service for rubyist:http://gemspec.info
> for Android users:http://www.android-app.info/
> --------------------------------------------------------------
>
> 2009/01/14 11:05 mizmit1222 <mizmit1...@gmail.com>:

Hiro Yoshioka

未読、
2009/01/14 23:13:012009/01/14
To: android-g...@googlegroups.com
よしおかともうします。

2009/1/15 mizmit1222 <mizmi...@gmail.com>:
>
> みずのです。ありがとうございます。

こんにちは、

repoを使ったことがないので、一般的なgitのワークフローに
なるかと思いますが、

> やっぱりブランチですよね。って、ドキュメントを読み直したら書いてあった。
> http://source.android.com/download/using-repo
>
>  Why use topic branches?
> Start a topic branch in your local work environment whenever you
> begin a change, for example when you begin work on a bug or new
> feature.
>
> こんな感じの操作でいいのかな?
>
> $ repo start eda1
> $ vi hoge/fuga/foo.java
> $ git add hoge/fuga/foo.java
> $ git commit

でもって、適宜、本家の動きをキャッチアップするのなら、
$ git pull
が必要かと。

> repoはプロジェクト単位と合計である全体、gitはサブディレクトリに降り
> てから、みたいな使い分けかしら。
>
> ひょっとして、git init / repo syncした直後の状態で、localmasterブ
> ランチを作って、それからeda1とか作るようにして、初期状態を温存
> した方がいいかしら。

これは多分必要ないと思いますよ。

最初はgit initではなくて、git cloneだと思うなあ。


--
http://d.hatena.ne.jp/hyoshiok/
http://blog.miraclelinux.com/yume/
mailto:hyos...@gmail.com

mizmit1222

未読、
2009/01/15 3:47:002009/01/15
To: 日本Androidの会
みずのです。ども。ありがとうございます。

>> これは多分必要ないと思いますよ。

リモートとローカルブランチ間で、diffを取る方法がよくわからないんです。
repo start branchで最初のブランチを切ってから、git branchすると、
「* eda1」になって、初期状態のブランチに戻れない。しくしく。

>> 最初はgit initではなくて、git cloneだと思うなあ。

間違えた。repo init -u git://android.git.kernel..... && repo syncでした。
repo syncは空の状態だと、git cloneと等価だそうです。リポジトリがあれ
ば、pull。

repoとgitを行ったり来たりで、混乱中。

ではでは。

On Jan 15, 1:13 pm, Hiro Yoshioka <hyosh...@gmail.com> wrote:
> よしおかともうします。
>
> 2009/1/15 mizmit1222 <mizmit1...@gmail.com>:
> mailto:hyosh...@gmail.com

Shin-ichiro KAWASAKI

未読、
2009/01/15 9:48:082009/01/15
To: android-g...@googlegroups.com
こんばんは。川崎と申します。

mizmit1222 wrote:
> みずのです。ども。ありがとうございます。
>
>>> これは多分必要ないと思いますよ。
>
> リモートとローカルブランチ間で、diffを取る方法がよくわからないんです。
> repo start branchで最初のブランチを切ってから、git branchすると、
> 「* eda1」になって、初期状態のブランチに戻れない。しくしく。

的外れかもしれませんが、、、
.git/refs/以下に、いろいろリモート含めてタグ名がはいってますので、
それを使ってdiffを取ればうまくいくと思います。
.git/refs/heads/master
.git/refs/remotes/a/b
がある場合、
% git diff master a/b
などとやると、diffが取れると思います。

# あと、repo forallが使いでがあるかな、と思います。
# % repo forall -c git checkout foo
# などでしょうか。

川崎

mizmit1222

未読、
2009/01/16 2:28:542009/01/16
To: 日本Androidの会
みずのです。こんにちは。

色々な方から教えていただけてうれしいです。ありがとうございます。

$ cd cupcake
$ find . -name ".git" -type d
./.repo/manifests/.git
./.repo/repo/.git
./bionic/.git

こんな感じで、repoの管理しているプロジェクトごとに.gitがあるんですね。

Kernelあたりに手を入れることがあるので、

$ ls -RF kernel/.git/refs/remotes/
kernel/.git/refs/remotes/:
korg/ m/

kernel/.git/refs/remotes/korg:
android-2.6.25 android-2.6.27

kernel/.git/refs/remotes/m:
cupcake

$ pushd kernel
$ git diff m/cupcake eda1

diff --git a/drivers/rtc/alarm.c b/drivers/rtc/alarm.c
index 98c90d8..9f6134b 100644
--- a/drivers/rtc/alarm.c
+++ b/drivers/rtc/alarm.c
@@ -13,7 +13,7 @@

おぉ。ちゃんと変更点が出てくる。

$ repo forall -c git diff m/cupcake eda1

これはいいですね。カレントディレクトリがどこであっても、
全てのプロジェクトをなめてくれる。その代わり遅いけど。

ではでは。



On Jan 15, 11:48 pm, Shin-ichiro KAWASAKI <kawas...@juno.dti.ne.jp>
wrote:
全員に返信
投稿者に返信
転送
新着メール 0 件