Git FAQ & SVN Conversion

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


http://code.google.com/p/support/wiki/GitFAQ

Git FAQ

何処でGitについてより多くのことを学べますか?

community-edited Git bookで学習を始めると良いです。

どうやってSubversion または Mercurial のリポジトリをGitのものに変換するのですか?

多くのバージョン管理システムからGitへ変換するためのオープソースツールがあります。
SubversionとMercurialとでそれぞれgit-svnとhg-fast-exportで変換に成功しましたが、
他のモノでもうまく変換出来るかもしれません。

どうやってリポジトリをリセットしますか?

プロジェクトのオーナーはチェックアウトページの下にある”reset”リンクをクリックすることが出来ます。(※”Administer”タブ-“Source”-“Repository”セクションの”Reset this project’s repository”?)
これは誤って機密情報をリポジトリへコミットしてしまったり、無関係なリポジトリからプッシュしたい場合に役に立ちます。

Gitリポジトリにサイズ上限はありますか?

全てのソース管理システムで4GiBのリポジトリサイズ上限があります。
Gitでは500MiBのプッシュサイズ制限で開始しています。500MiBを超すパッケージをプッシュしようとした場合、プッシュは失敗します。この制限は解除したいと思っています。
(※GiB,MiB…ギビバイト、メビバイト)

どのバージョンのGitが必要ですか?

バージョン1.6.6以上。

私のwikiは何処に行きましたか?

プロジェクトwikiはバージョン管理内に格納されています。Subversionプロジェクトでは、リポジトリのルートの”/wiki”で見つけることが出来ます。GitとMercurialのプロジェクトでは、wikiは独立した”wiki”リポジトリに格納されます。

あるバージョン管理システムから別のものへあなたのプロジェクトを変換した場合、さらに適切な新しい場所へwikiのファイルをコピーする必要もあります。あなたは一時的に古いバージョン管理システムへ切り替えることが出来、wikiを含む全てのあなたのデータはそこにまだ存在します。

何故Gitは“everything up to date”というメッセージを返してプッシュを拒絶するのですか?

引数なしの”git push “は既にリモートリポジトリに存在しているブランチのみをプッシュします。リモートリポジトリが空の場合、何もプッシュしません。この場合、明示的にプッシュするブランチを指定します。例: git push  master

https://の代わりにgit://またはssh://で自分のリポジトリにアクセスすることが出来ますか ?

Googleのプロダクションサーバの高度なスケーラビリティ及びロードバランシング技術を活用する為に、我々はHTTP接続の受信のみを受け入れています。バージョン1.6.6で導入されたGit Smart HTTPプロトコル以外のプロトコルをサポートする予定はありません。

HTTPS経由の匿名(読み込み専用)及び認証済み(読み書き)アクセスをサポートします。

クレデンシャルを.netrcファイル内に記述しているのに、何故Gitは依然としてパスワードを尋ねてくるのですか?

URL内にあなたのユーザーネームがある場合、C git クライアントは常にパスワードを尋ねます。コマンドラインと.git/configファイルをチェックし、あなたのcode.google.com URLがあなたのユーザーネームを含んでいないことを確認してください。(@までの部分)


http://code.google.com/p/support/wiki/ConvertingSvnToGit

ConvertingSvnToGit  


プロジェクトをSubversionからGitへ変換する

あなたのプロジェクトをSubversionからGitへ切り換える為に以下の説明に従ってください:

  1. あなたの現在のオープンソースプロジェクトへ行き、AdministerタブのSourceサブタブを選択します。
  2. リポジトリタイプをGitへ変更します。
  3. 以下の’SubversionヒストリーをGitへ変換する方法’セクションで説明されている通りにあなたのコードをGitコードリポジトリへインポートします。
  4. コードをインポートした時と同じ方法で、Git wikiリポジトリへあなたのwikiをインポートします。Subversionリポジトリ(例 http://projectname.googlecode.com/svn/wiki)及びHg wikiリポジトリ(http://code.google.com/p/projectname.wiki/)内のパスを使用することを確認してください。

Gitを使用する為にプロジェクトを切り換えた後でも旧Subversionプロジェクトは依然としてアクセス出来るので、切り換え前にリポジトリをバックアップする必要はありません。Subversionリポジトリはhttps://projectname.googlecode.com/svn/でアクセス可能なままです。

旧SubversionデータをGitへ変換するまでは、新しいリポジトリとwikiは空です。
(心配いりません、旧Subversionデータは依然としてありますし、いつでも切り換えて戻すことが出来ます。 )

SubversionヒストリーをGitへ変換する方法

以下の選択肢両方の為に、プロジェクトのクローンURLを知っているか確認し、プロジェクトのソースチェックアウトページでclone命令に慣れてください? “Source”タブをクリックするか、https://code.google.com/p/projectname/source/checkout へ直接行くことによってこのページへ行くことが出来ます。

この手順で厳密にはgit clone命令を使用しませんが、そのURLとユーザーネーム/パスワード情報を使用する必要があります。(※git cloneを使用しないという部分の意味がよくわからない)

選択肢 1: Top-Skimming(※表面の上澄みをすくう?/表面をざっと読む?=最新版のみの移行?)

あなたがプロジェクトのヒストリー(履歴)を気にしないのであれば、単純にSubversionから最新版のtrunkのコードとwikiを取得し、それをGitへ入れることが出来ます。あなたのgooglecode Git リポジトリが空であると仮定すると、それは簡単です:
  $ git clone https://code.google.com/p/projectname
  $ cd projectname
  $ svn export –force http://projectname.googlecode.com/svn/trunk .
  $ git add .
  $ git commit -m “Initial import of source.”
  $ git push origin master

wikiの変換:
  $ git clone https://code.google.com/p/projectname.wiki
  $ cd projectname.wiki
  $ svn export –force http://projectname.googlecode.com/svn/wiki .
  $ git add .
  $ git commit -m “Initial import of wiki.”
  $ git push origin master

選択肢 2: 完全ヒストリー変換

全てのヒストリーを移行したいと望む場合は、過程がより複雑になります。git-svnと呼ばれるツールを使用することになります。このツールは標準的なGitディストリビューションには含まれています。

あなたが標準的なGoogle Code Subversionプロジェクトレイアウト(/trunk, /branches, /tags, and /wikidirectories)を使用している場合、以下のステップは最適です。

git-svnはここで体験する単純なヒストリー変換よりもはるかに多くのことが出来る強力なツールです。 より詳しい情報は完全なドキュメントを見てください。
(※2011/10/5現在、http://www.kernel.org/は閉鎖中のままのようです。8月のクラッキング被害の関係?) 

ヒストリーを変換することはsvnリモートヘルパーを使用してSubversion repoを複製するのと同じくらい簡単です:

  $ git svn clone –stdlayout https://projectname.googlecode.com/svn projectname
  $ cd projectname
  $ git remote add googlecode https://code.google.com/p/projectname
  $ git push –all googlecode

プロジェクトがタグを使用していた場合、それらもGitにプッシュする必要があります。以下の命令はSubversion repo内の全てのタグ用に単純なタグを作成します。もしアノテーティッドタグ(注釈付きタグ?)を作成したい場合は過程はより複雑になります。簡単な例はhttp://gitready.com/advanced/2009/02/16/convert-git-svn-tag-branches-to-real-tags.html を見てください。

  $ git push googlecode refs/remotes/tags/*:refs/tags/*

wikiのヒストリーを変換するには、似たような手法を取ります。(接尾辞”.wiki”を追加します):

  $ git svn clone https://projectname.googlecode.com/svn/wiki projectname.wiki
  $ cd projectname.wiki
  $ git remote add googlecode https://code.google.com/p/projectname.wiki
  $ git push –all googlecode

やりました! プロジェクトのSourceまたはWikiタブを見たら、変換されたリポジトリヒストリーを見ることでしょう。
何かトラブルに遭遇したら、気軽にgoogle-code-hosting@googlegroups.comへ連絡してください。