Repo全解の自分でrepo倉庫を建てる

7515 ワード

repoって何?
Repoはgitベースの倉庫管理ツールで、pythonスクリプトです.Repoは多くのgit倉庫を管理し、統一的なアップロードなどの他の操作を行うことができ、Andoid開発プロセスの一部を自動化することができます.
repoガイド
まずrepoは2つの部分に分かれています.一部はrepoというpythonファイルで、もう一部はrepoです.gitというgit倉庫このrepoファイルはブートのようで、コマンドをダウンロードして実行可能に設定します.
$curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo  
$chmod a+x ~/bin/repo  

次の操作を実行できます.
$~/bin/repo  #         PATH 
error: repo is not installed.  Use "repo init" to install it here. 

プロンプトrepoがインストールされていない場合は、次のコマンドを実行します.
$~/bin/repo help

usage: repo COMMAND [ARGS]

repo is not yet installed.  Use "repo init" to install it here.

The most commonly used repo commands are:

  init      Install repo in the current working directory
  help      Display detailed help on a command

For access to the full online help, install repo ("repo init").

ヒントrepoがインストールされていないので、repo initを使用してインストールできます.2つのサブコマンドのみがサポートする.これは、このrepoファイルがブートまたはインストーラであることを示す.どのようにインストールしますか?
repo.git gpg署名
ヒントに従って、次の操作を行います.
$repo init #   repo    PATH 
Get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: manifest url (-u) is required.

しばらく待つと上記のように表示され、googleのgerritからrepoをダウンロードしていることがわかります.git倉庫、最後にrepo initの使い方を提示するにはmanifestのurlを指定しなければならないので、次の節で紹介します.このコマンドを実行すると、現在のディレクトリにディレクトリが作成されます.repo、その中にrepoというディレクトリがあります.repoからです.git倉庫で検出されたコード.cd到repo/repo,git status,発見時にcloneが来たのになぜそのアドレスにコードを検出したのですか?答えはきっとそのrepoスクリプトの中に2つの変数があるに違いない.
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
REPO_REV = 'stable'

それぞれrepoです.git倉庫のurlと検出されたbranch.もし私たちがrepoをcloneに来させたいなら、私たちのrepo.git,上の変数を修正すればよい.どうやって自分でrepoを作るの?gitは?これはもう一つの問題です.次にrepo helpを実行します.
$repo help
usage: repo COMMAND [ARGS]
The most commonly used repo commands are:
  abandon        Permanently abandon a development branch
  branch         View current topic branches
  branches       View current topic branches
  checkout       Checkout a branch for development
  cherry-pick    Cherry-pick a change.
  diff           Show changes between commit and working tree
  diffmanifests  Manifest diff utility
  download       Download and checkout a change
  grep           Print lines matching a pattern
  info           Get info on the manifest branch, current branch or unmerged branches
  init           Initialize repo in the current directory
  list           List projects and their associated directories
  overview       Display overview of unmerged project branches
  prune          Prune (delete) already merged topics
  rebase         Rebase local branches on upstream branch
  smartsync      Update working tree to the latest known good revision
  stage          Stage file(s) for commit
  start          Start a new branch for development
  status         Show the working tree status
  sync           Update working tree to the latest revision
  upload         Upload changes for code review
See 'repo help ' for more information on a specific command.
See 'repo help --all' for a complete list of recognized commands.

わあ、命令がこんなに多い!!このとき、repoツールがあるだけですが、複数のgitを管理するには、gitを管理する方法、どこから引くかなどを説明するリストが必要です.この任務はmanifestに依存しなければならない.gitです.前に述べたように、repo initの場合、-u urlでmanifestを指定します.gitの位置
manifests.git
次のコマンドを使用します.
$repo init -u https://android.googlesource.com/platform/manifests

repoの初期化に成功します.しかし、私たちは自分の倉庫を管理しなければならないので、自分のmanifestsを構築しなければなりません.git. このmanifestsの内容が一番簡単なのはdefaultです.xml. default.xmlの内容は次のとおりです.


<manifest>
    <remote name="local" fetch="git://localhost/" />
    <default remote="local" revision="master"/>
    <project path="hello" name="helo"/>
manifest>

ルート要素manifestはremote,default,projectを定義する.remoteは複数可能で、それぞれ1つのリモート引き出し倉庫を定義し、fetchは倉庫のurlであり、使用可能である.repo init-u urlのurl defaultを使用すると、各プロジェクトのデフォルト倉庫とデフォルト分岐projectがリモート倉庫とcloneがローカルに来た後のディレクトリ名を示すプロジェクトを定義します.nameはプロジェクトのリモートウェアハウス名で、以上のコードで引いたプロジェクトはgit://localhost/helo
管理する倉庫
管理する倉庫は普通のgit.以上のすべての準備が完了すると.僕らはできる
$repo sync
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From git://localhost/helo
 * [new branch]      master     -> local/master

hello/: leaving master; does not track upstream
$ls
hello  repo

遠隔倉庫が現地に引き寄せられた.
まとめ
実は、私はいつも多くのgitライブラリを使ってノートとプロジェクトを保存して、私の住んでいる地方は木がネットがあって、それから私は私のノートと会社のコンピュータからデータを同期して、uディスクを通じてしかできなくて、そこでどのようにcloneの地元のgit倉庫を研究して、git倉庫が多くなって、私は毎回1つ1つの同期が面倒で、だからrepoを考えて、前に携帯電話のシステムをしてずっと使ったことがあるため、そしていたずらをして、私が最終的に出したとき、reviewがなくて、私の提出は私のgit倉庫に提出できないことに気づいて、そこで無言になりました.でもね、勉強になりました.実はそれを使って同期することができて、ただ少し鶏を殺して牛刀を使って、簡単なシナリオを書くほうがいいです.
いくつかの問題
  • repoはAndroidでしか使えませんか?

  • リファレンス
    http://source.android.com/source/developing.htmlrepoの使用http://source.android.com/source/using-repo.htmlrepoの使用http://source.android.com/source/downloading.html#installing-repoインストールrepohttp://project-management.diandian.com/post/2012-03-02/14242257自分のrepoを構築する.git Git権威ガイド-第4編-第25章-REPOhttps://code.google.com/p/git-repo/source/browse/docs/manifest-format.txt?r=cd81dd6403fc8dbe6ec5920c517d9083902c3c1fmanifestのフォーマットについて詳しく説明しました
    私のブログをもっと見たいです.http://jinguoliang.github.io