blob: 530f892d5a464ab99c57f8867c2b5804e9e59668 [file] [log] [blame]
<html devsite><head>
<title>Referência do comando do repo</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
<!--
Copyright 2017 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<p>O uso do repo assume o seguinte formato: </p>
<pre class="devsite-terminal devsite-click-to-copy">
repo <var>&lt;COMMAND&gt; &lt;OPTIONS&gt;</var>
</pre>
<p>Os elementos opcionais são mostrados entre colchetes [ ]. Por exemplo, muitos comandos aceitam uma lista de projetos como um argumento. Você pode especificar a lista de projetos como uma lista de nomes ou uma lista de caminhos para os diretórios de origem locais dos projetos:</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">repo sync [<var>&lt;PROJECT0&gt; &lt;PROJECT1&gt; ... &lt;PROJECTN&gt;</var>]</code>
<code class="devsite-terminal">repo sync [<var>&lt;/PATH/TO/PROJECT0&gt; ... &lt;/PATH/TO/PROJECTN&gt;</var>]</code>
</pre>
<h2 id="help">help</h2>
<p>Depois que o repo estiver instalado, você poderá encontrar a documentação mais recente, começando com um resumo de todos os comandos, executando:</p>
<pre class="devsite-terminal devsite-click-to-copy">
repo help
</pre>
<p>Encontre informações sobre qualquer comando executando isto em uma árvore de repo:</p>
<pre class="devsite-terminal devsite-click-to-copy">
repo help <var>&lt;COMMAND&gt;</var>
</pre>
<p>O comando a seguir, por exemplo, produz uma descrição e uma lista de opções para o argumento <code>init</code> do repo, que inicializa o repo no diretório atual. Consulte <a href="#init">init</a> para ver mais detalhes.</p>
<pre class="devsite-terminal devsite-click-to-copy">
repo help init
</pre>
<h2 id="init">init</h2>
<pre class="devsite-terminal devsite-click-to-copy">repo init -u <var>&lt;URL&gt;</var> [<var>&lt;OPTIONS&gt;</var>]
</pre>
<p>Instala o repo no diretório atual. Isso cria um diretório <code>.repo/</code>, que contém repositórios Git para o código-fonte do repo e os arquivos padrão de manifesto do Android. O diretório <code>.repo/</code> também contém <code>manifest.xml</code>, que é um symlink para o manifesto selecionado no diretório <code>.repo/manifests/</code>. Consulte <a href="https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.md" class="external">manifest-format.md</a> para ver instruções sobre como atualizar o manifesto.</p>
<p>Opções:</p>
<ul>
<li>
<p><code>-u</code>: especifica um URL a partir do qual é possível recuperar um repositório de manifesto. O manifesto comum pode ser encontrado em <code>https://android.googlesource.com/platform/manifest</code></p>
</li>
<li>
<p><code>-m</code>: seleciona um arquivo de manifesto no repositório. Se nenhum nome de manifesto for selecionado, o padrão será default.xml. </p>
</li>
<li>
<p><code>-b</code>: especifica uma revisão, isto é, um branch de manifesto específico.</p>
</li>
</ul>
<p class="note"><strong>Observação</strong>: para todos os comandos repo restantes, o diretório de trabalho atual precisa ser o diretório pai de <code>.repo/</code> ou um subdiretório do diretório pai.</p>
<h2 id="sync">sync</h2>
<pre class="devsite-terminal devsite-click-to-copy">
repo sync [<var>&lt;PROJECT_LIST&gt;</var>]
</pre>
<p>Faz o download de novas alterações e atualiza os arquivos de trabalho no ambiente local. Se você executar <code>repo sync</code> sem nenhum argumento, ele sincronizará os arquivos para todos os projetos.</p>
<p>Quando você executa <code>repo sync</code>, acontece o seguinte:</p>
<ul>
<li>
<p>Se o projeto nunca foi sincronizado, o <code>repo sync</code> será equivalente ao <code>git clone</code>. Todos os branches do repositório remoto são copiados para o diretório do projeto local.</p>
</li>
<li>
<p>Se o projeto já foi sincronizado uma vez, o <code>repo sync</code> é equivalente a:</p>
<pre><code>git remote update
git rebase origin/<var>&lt;BRANCH&gt;</var>
</code></pre>
<p>onde <code>&lt;BRANCH&gt;</code> é o branch recebido no momento no diretório do projeto local. Se o branch local não estiver rastreando um branch no repositório remoto, nenhuma sincronização ocorrerá no projeto.</p>
</li>
<li>
<p>Se a operação de realocação do git resultar em conflitos de mesclagem, você precisará usar os comandos normais do Git (por exemplo, <code>git rebase --continue</code>) para resolver os conflitos.</p>
</li>
</ul>
<p>Após uma <code>repo sync</code> bem-sucedida, o código será atualizado nos projetos especificados com o código no repositório remoto.</p>
<p>Opções:</p>
<ul>
<li>
<p><code>-d</code>: alterna os projetos especificados de volta para a revisão de manifesto. É útil se o projeto está em um branch de tópicos no momento, mas a revisão de manifesto é temporariamente necessária.</p>
</li>
<li>
<p><code>-s</code>: sincroniza para uma versão válida conhecida, conforme especificado pelo elemento do servidor do manifesto no manifesto atual.</p>
</li>
<li>
<p><code>-f</code>: prossegue com a sincronização de outros projetos mesmo que a sincronização de um projeto falhe.</p>
</li>
</ul>
<h2 id="upload">upload</h2>
<pre class="devsite-terminal devsite-click-to-copy">
repo upload [<var>&lt;PROJECT_LIST&gt;</var>]
</pre>
<p>Para os projetos especificados, o repo compara os branches locais com os branches remotos atualizados durante a última sincronização do repo. O repo solicitará que você selecione um ou mais branches que ainda não foram enviados para análise.</p>
<p>Depois que você selecionar um ou mais branches, todas as confirmações dos branches selecionados serão transmitidas para o Gerrit por uma conexão HTTPS. Será preciso configurar uma senha HTTPS para ativar a autorização de upload. Visite o <a href="https://android-review.googlesource.com/new-password">Gerador de senhas</a> para gerar um novo par de nome de usuário/senha para usar em HTTPS.</p>
<p>Quando o Gerrit receber os dados do objeto no servidor, ele transformará cada confirmação em uma alteração para que os revisores possam comentar em cada uma delas individualmente. Para combinar várias confirmações de "checkpoint" juntas em uma única confirmação, use a realocação do git -i antes de fazer upload do repo.</p>
<p>Se você fizer upload do repo sem nenhum argumento, ele pesquisará todos os projetos em busca de alterações no upload.</p>
<p>Para fazer edições nas alterações após o upload, você precisará usar uma ferramenta como <code>git rebase -i</code> ou <code>git commit --amend</code> para atualizar suas confirmações locais. Depois que suas edições forem concluídas:</p>
<ul>
<li>
<p>verifique se o branch atualizado é o branch recebido atual;</p>
</li>
<li>
<p>para cada confirmação na série, insira o código de alteração do Gerrit entre colchetes:</p>
<pre><code># Replacing from branch foo
[ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
[ 2829 ] ec18b4ba Update proto client to support patch set replacments
# Insert change numbers in the brackets to add a new patch set.
# To create a new change record, leave the brackets empty.
</code></pre>
</li>
</ul>
<p>Depois que o upload for concluído, as alterações terão um conjunto de patches adicional.</p>
<p>Se você quiser fazer upload apenas do branch do Git recebido no momento, use o sinalizador <code>--current-branch</code> (ou a abreviação <code>--cbr</code>).</p>
<h2 id="diff">diff</h2>
<pre class="devsite-terminal devsite-click-to-copy">
repo diff [<var>&lt;PROJECT_LIST&gt;</var>]
</pre>
<p>Mostra alterações pendentes entre a confirmação e a árvore de trabalho usando <code>git diff</code>. </p>
<h2 id="download">download</h2>
<pre class="devsite-terminal devsite-click-to-copy">
repo download <var>&lt;TARGET&gt; &lt;CHANGE&gt;</var>
</pre>
<p>Faz o download da alteração especificada no sistema de revisão e a disponibiliza no diretório de trabalho local do seu projeto.</p>
<p>Por exemplo, para fazer o download da <a href="https://android-review.googlesource.com/23823">alteração 23823</a> para seu diretório de plataforma/versão:</p>
<pre class="devsite-terminal devsite-click-to-copy">
repo download platform/build 23823
</pre>
<p>Um <code>repo sync</code> precisa remover efetivamente as confirmações recuperadas por meio de <code>repo download</code>. Ou você pode receber o branch remoto, ou seja, <code>git checkout m/master</code>.</p>
<p class="note"><strong>Observação</strong>: há um pequeno atraso no espelhamento entre o instante em que uma alteração fica visível na Web no <a href="https://android-review.googlesource.com/">Gerrit</a> e aquele em que o <code>repo download</code> é capaz de encontrá-la para todos os usuários. Isso acontece por atrasos de replicação para todos os servidores do mundo.</p>
<h2 id="forall">forall</h2>
<pre class="devsite-terminal devsite-click-to-copy">
repo forall [<var>&lt;PROJECT_LIST&gt;</var>] -c <var>&lt;COMMAND&gt;</var>
</pre>
<p>Executa o comando shell fornecido em cada projeto. As seguintes variáveis de ambiente adicionais são disponibilizadas pelo <code>repo forall</code>:</p>
<ul>
<li>
<p><code>REPO_PROJECT</code> é definido como o nome exclusivo do projeto.</p>
</li>
<li>
<p><code>REPO_PATH</code> é o caminho relativo para a raiz do cliente.</p>
</li>
<li>
<p><code>REPO_REMOTE</code> é o nome do sistema remoto do manifesto.</p>
</li>
<li>
<p><code>REPO_LREV</code> é o nome da revisão do manifesto, traduzido em um branch de rastreamento local. Usado se você precisar passar a revisão de manifesto para um comando git executado localmente.</p>
</li>
<li>
<p><code>REPO_RREV</code> é o nome da revisão do manifesto, exatamente como está escrito nele.</p>
</li>
</ul>
<p>Opções:</p>
<ul>
<li>
<p><code>-c</code>: comando e argumentos a serem executados. O comando é avaliado por meio de <code>/bin/sh</code> e qualquer argumento depois dele é passado como parâmetro de posicionamento do shell.</p>
</li>
<li>
<p><code>-p</code>: mostra os cabeçalhos do projeto antes da saída do comando especificado. Isso é conseguido com a vinculação de pipes aos streams stdin, stdout e sterr do comando e com o encadeamento de toda a saída para um stream contínuo que é exibido em uma sessão de uma única página.</p>
</li>
<li>
<p><code>-v</code>: mostra as mensagens que o comando escreve para stderr. </p>
</li>
</ul>
<h2 id="prune">prune</h2>
<pre class="devsite-terminal devsite-click-to-copy">
repo prune [<var>&lt;PROJECT_LIST&gt;</var>]
</pre>
<p>Descarta (exclui) tópicos que já estão mesclados.</p>
<h2 id="start">start</h2>
<pre class="devsite-terminal devsite-click-to-copy">repo start <var>&lt;BRANCH_NAME&gt;</var> [<var>&lt;PROJECT_LIST&gt;</var>]
</pre>
<p>Inicia um novo branch para desenvolvimento, começando pela revisão especificada no manifesto.</p>
<p>O argumento <code>&lt;BRANCH_NAME&gt;</code> precisa fornecer uma breve descrição da alteração que você está tentando fazer nos projetos. Se você não sabe, considere usar o nome padrão.</p>
<p>O <code>&lt;PROJECT_LIST&gt;</code> especifica quais projetos participarão desse branch de tópico. </p>
<p class="note"><strong>Observação</strong>: "." é um atalho útil para o projeto no diretório de trabalho atual.</p>
<h2 id="status">status</h2>
<pre class="devsite-terminal devsite-click-to-copy">
repo status [<var>&lt;PROJECT_LIST&gt;</var>]
</pre>
<p>Compara a árvore de trabalho à área de organização (índice) e à confirmação mais recente nesse branch (HEAD) em cada projeto especificado. Exibe uma linha de resumo para cada arquivo em que há uma diferença entre esses três estados.</p>
<p>Para ver o status apenas para o branch atual, execute <code>repo status</code>. As informações de status serão listadas por projeto. Para cada arquivo no projeto, é usado um código de duas letras:</p>
<p>Na primeira coluna, uma letra maiúscula indica como a área de organização difere do último estado confirmado.</p>
<table>
<thead>
<tr>
<th>letra</th>
<th>significado</th>
<th>descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td>-</td>
<td>nenhuma alteração</td>
<td>o mesmo no HEAD e no índice</td>
</tr>
<tr>
<td>A</td>
<td>adicionado</td>
<td>ausente no HEAD, mas presente no índice</td>
</tr>
<tr>
<td>M</td>
<td>modificado</td>
<td>presente no HEAD, modificado no índice</td>
</tr>
<tr>
<td>D</td>
<td>excluído</td>
<td>presente no HEAD, mas não no índice</td>
</tr>
<tr>
<td>R</td>
<td>renomeado</td>
<td>ausente no HEAD, caminho alterado no índice</td>
</tr>
<tr>
<td>C</td>
<td>copiado</td>
<td>ausente no HEAD, copiado de outro no índice</td>
</tr>
<tr>
<td>T</td>
<td>modo alterado</td>
<td>mesmo conteúdo no HEAD e no índice, modo alterado</td>
</tr>
<tr>
<td>U</td>
<td>não mesclado</td>
<td>conflito entre o HEAD e o índice, resolução necessária</td>
</tr>
</tbody>
</table>
<p>Na segunda coluna, uma letra minúscula indica como o diretório de trabalho é diferente do índice.</p>
<table>
<thead>
<tr>
<th>letra</th>
<th>significado</th>
<th>descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td>-</td>
<td>novo/desconhecido</td>
<td>ausente no índice, presente na árvore de trabalho</td>
</tr>
<tr>
<td>m</td>
<td>modificado</td>
<td>presente no índice e na árvore de trabalho, modificado</td>
</tr>
<tr>
<td>d</td>
<td>excluído</td>
<td>presente no índice, mas não na árvore de trabalho</td>
</tr>
</tbody>
</table>
</body></html>