Inspirado pelo Git para iniciantes: o guia prático definitivo .
Esta é uma compilação de informações sobre o uso do Mercurial para iniciantes para uso prático .
Iniciante - um programador que tocou no controle de origem sem entendê-lo muito bem.
Prático - cobrindo situações que a maioria dos usuários geralmente encontra - criando um repositório, ramificando, mesclando, puxando / empurrando de / para um repositório remoto, etc.
Notas :
- Explique como fazer algo e não como algo é implementado.
- Lide com uma pergunta por resposta.
- Responda de forma clara e concisa possível.
- Edite / estenda uma resposta existente em vez de criar uma nova resposta sobre o mesmo tópico.
- Forneça um link para o wiki Mercurial ou o HG Book para pessoas que desejam aprender mais.
Questões:
Instalação / Configuração
- Como instalar o Mercurial?
- Como configurar o Mercurial?
- Como você cria um novo projeto / repositório?
- Como você o configura para ignorar arquivos?
Trabalhando com o código
- Como você obtém o código mais recente?
- Como você verifica o código?
- Como você confirma alterações?
- Como você vê o que não foi confirmado ou o status da sua base de código atual?
- Como você remove arquivos do repositório?
- Como você destrói confirmações indesejadas?
- Como você compara duas revisões de um arquivo ou seu arquivo atual e uma revisão anterior?
- Como você vê o histórico de revisões em um arquivo ou repositório?
- Como você lida com arquivos binários (documentos do visio, por exemplo, ou ambientes de compilador)?
- Como você mescla arquivos alterados ao "mesmo tempo"?
- Como você reverte um Changeset?
- Como você volta para uma versão anterior do código?
- Como você extrai um patch de um conjunto de alterações específico?
- Como você registra que renomeou ou excluiu um arquivo sem usar o comando Mercurial?
Etiquetagem, ramificação, lançamentos, linhas de base
- Como você 'marca' 'marca' ou 'libera' um conjunto específico de revisões para um conjunto específico de arquivos, para que você possa fazer isso posteriormente mais tarde?
- Como você puxa um 'release' específico?
- Como você se ramifica?
- Como você mescla ramificações?
- Como você mescla partes de um ramo em outro ramo?
De outros
- Bom plugin GUI / IDE para o Mercurial? Vantagens desvantagens?
- Quaisquer outras tarefas comuns que um iniciante deve saber?
- Como faço para interagir com o Subversion?
Outras referências mercuriais
- Mercurial: O Guia Definitivo
- Mercurial Wiki
- Conheça Mercurial | Peepcode Screencast
- Dominando o Mercurial | TekPub Screencast
- Hg Init - tutorial inicial do Mercurial
hg add
ignorou manualmente os arquivos, o Mercurial os rastreará. Por exemplo, se você tem um monte de arquivos, comodeploy-test.conf
,deploy-production.conf
etc, e não querem versão los (eles podem ter senhas em si), mas você fazer quer para a versãodeploy-template.conf
que você pode simplesmente ignorardeploy*
e adicionar manualmentedeploy-templace.conf
.Como você vê o que não foi confirmado ou o status da sua base de código atual?
Para ver uma lista de arquivos que foram alterados:
Isso imprimirá cada arquivo que foi alterado juntamente com seu status, que pode incluir:
M
- modificado. O arquivo foi alterado e as alterações não foram confirmadas.A
- Adicionado. O arquivo não foi rastreado antes, mas se você confirmar o Mercurial, ele começará a rastreá-lo.R
- Removido. O arquivo foi rastreado antes, mas se você confirmar, o Mercurial deixará de rastreá-lo nesta e em futuras confirmações.?
- desconhecido. No momento, o arquivo não é rastreado pelo Mercurial. A confirmação não terá efeito a menos que você usehg add
para adicioná-lo.!
- Ausência de. O arquivo foi rastreado, mas o Mercurial não pode encontrá-lo na cópia de trabalho.Para ver as alterações que foram realmente feitas nos arquivos:
fonte
Como você cria um novo projeto / repositório?
fonte
Como faço para interagir com o Subversion?
Existem três maneiras:
A extensão convert irá clonar um repositório Subversion existente em um repositório Mercurial. Ele vem com o Mercurial. Funciona aproximadamente assim:
Por exemplo, isso irá pegar o tronco do repositório em cache do SixApart.
A extensão pode trazer novas revisões de um repositório Subversion para o Mercurial (um pouco como puxar). No entanto, ele não suporta tirar revisões do Mercurial e enviá-las de volta ao Subversion (sem push). [XXX: corrija isso se estiver errado] .
A extensão hgsubversion . É de muitas maneiras a solução mais sofisticada, pois usa a API do Subversion para se comunicar com o repositório do Subversion. Seu objetivo é se tornar a ponte hg-svn. Permite revisões completas das revisões (clone, puxar e empurrar). No entanto, até o momento em que este artigo foi escrito [XXX: Altere isso se / quando ficar incorreto] , ainda está em desenvolvimento e ainda não há lançamentos oficiais. Como conseqüência, ele funciona apenas com o Mercurial mais atualizado (1,3 até o momento).
tags/
para distingui-las das ramificações com nomes equivalentes).closed-branches
para fechar ramificações removidas no Subversion.hg svn <subcommand>
a ser integrado ao ponto em que você não precisa da parte 'svn' (isto é, deseja tratar o clone do Subversion o máximo possível, como qualquer outro repositório Mercurial) .;Funciona assim:
clone:
OU (apenas para
svn://
URLs)puxar:
empurrar:
entrada:
extrovertido:
Verificando um repositório inteiro:
O utilitário hgsvn ( árvore de bitbucket ). Até recentemente, isso só permitia clonar e extrair um repositório do Subversion, mas, a partir
hgsvn 0.1.7
dele, suporta push. [Eu não sei o quão bem ele empurra. Qualquer pessoa com mais experiência deve atualizar isso.] Ele possui os seguintes recursos notáveis:branches/some-feature
seria comohg branch some-feature
. Coloca o troncotrunk
(ou seja, nada está no ramo padrão do Mercurial, a menos que o usuário mude explicitamente).Funciona assim:
clone:
puxar:
empurrar:
entrada:
extrovertido:
Verificando um repositório inteiro:
Verificando apenas o tronco:
fonte
hg convert
e realmente leva muito tempo quando você tem um repositório svn com muitos commits. A configuração de um repositório local comsvnsync
ajuda muito a acelerar as coisas - especialmente quando você precisa fazer isso várias vezes, porque você tinha algumas opções erradas no comando convert.svnsync
precisava acessar os arquivos reais do repositório, não apenas o URL.Como você compara duas revisões de um arquivo ou seu arquivo atual e uma revisão anterior?
Ambos usam
hg diff
. Quandohg diff
é usado, todas as alterações na cópia de trabalho e a dica (a confirmação mais recente) são exibidas.Para "Como você compara duas revisões de um arquivo?"
O comando acima mostrará diferentes entre rev1 e rev2 de "file.code".
Para "Como você compara seu arquivo atual e uma revisão anterior?"
O comando acima mostrará diferentes entre a versão atual do "file.code" e a última revisão (a última confirmada).
: D
fonte
Como você 'marca' 'marca' ou 'libera' um conjunto específico de revisões para um conjunto específico de arquivos, para que você possa fazer isso posteriormente mais tarde?
Você também pode clonar seu repositório para criar um repositório de tags especial .
fonte
hg tag my-tag
?Como você se ramifica?
Filial $ hg minha filial
ou
$ hg clone repositório original my-branch
Embora seja necessário observar que o branch cria um diretório "virtual" (ou seja, os arquivos permanecem os mesmos, mas o hg os trata como se fossem diferentes dentro do sistema), enquanto o clone cria uma cópia completa e real. A rigor, o clone não está se ramificando.
fonte
hg branch my-branch
Bom plugin GUI / IDE para o Mercurial?
GUI
Plugins
fonte
Como você confirma alterações?
Chame este comando do repositório local * mercurial atual
aliases: ci
Onde a opção pode ser:
Um exemplo de comando seria:
NOTAS :
fonte
Como configurar o Mercurial?
O Mercurial armazena suas informações de configuração nos
~/.hgrc
sistemas * nix e nos%UserProfile%\mercurial.ini
sistemas Windows. (%UserProfile%
normalmente"C:\Documents and Settings\[username]\"
em sistemas Windows 2000 ou Windows XP e normalmenteC:\Users\[username]\
Windows Vista e Windows 7).Como ponto de partida, você deve definir seu nome de usuário do Mercurial colocando o seguinte em seu
.hgrc
oumercurial.ini
:Usuários do TortoiseHg em sistemas Windows podem executar alternativamente
hgtk userconfig
Consulte também " Criando um arquivo de configuração do Mercurial " no capítulo 2 de " Mercurial: o guia definitivo ".
fonte
Como você mescla ramificações?
fonte
Como instalar o Mercurial?
Edite bem se você instalou a partir da fonte no Linux ou usou os instaladores do Windows.
Mac OS X 10.4 (Tiger), 10.5 (Leopard)
Use o easy_install do Python (com Setuptools ):
Ele encontra a versão mais recente (1.3.1 no momento da redação) e é instalada em:
Com o Python 2.6, isso também contorna o pacote de instalação do Mercurial OS X (na 1.2.1 em 26 de julho de 2009), reclamando que ele precisa do Python 2.5. A partir da documentação , parece que o Fink e o Macports instalam a versão 1.2.
Linux
A maioria dos pacotes Linux explícitos parece ficar para trás da versão atual; portanto, use easy_install (como acima) ou faça o download do pacote Mercurial , extraia o arquivo morto, mude para o diretório mercurial e execute:
(do Introducing Mercurial, um sistema de controle de versão distribuído )
janelas
Há um pacote binário da versão mais recente do Mercurial . TortoiseHg é uma extensão de shell do Windows para e instala o Mercurial. Cygwin também pode instalar o Mercurial.
Como alternativa (instruções muito longas, então linkadas aqui), você pode criar uma versão otimizada ou pura do Mercurial para Python .
fonte
Como você obtém o código mais recente?
O Mercurial lembra de onde um repositório foi clonado (em .hg / hgrc) para que você possa simplesmente executar:
para extrair o código mais recente do repositório de origem. (Isso não atualiza o diretório de trabalho)
para atualizar o diretório de trabalho.
para executar um pull e uma atualização de uma só vez.
fonte
.hg/hgrc
quando você faz um clone, para que você não precise especificá-lo ao puxar / empurrar. Você pode adicionar mais caminhos à[paths]
seção,.hg/hgrc
se desejar.Como você verifica o código?
Onde a opção pode ser:
Onde source é a origem dos arquivos originais localizados no repositório, onde pode ser um URL remoto ou um diretório do sistema de arquivos. Por exemplo:
E o destino é onde o código fonte estará localizado no seu sistema de arquivos local.
fonte
Como você confirma alterações?
fonte
Como você vê quais alterações serão enviadas ao repositório upstream quando você pressiona?
Use
hg outgoing
para obter a lista de conjuntos de alterações que serão configurados para o repositório padrão:Para obter as alterações reais do código, use
-p
(--patch
). Isso produzirá cada conjunto de alterações na íntegra:fonte
Como você remove um arquivo do repositório?
Para remover um arquivo do repositório e excluí-lo no próximo commit:
Para remover um arquivo do repositório, mas não o excluir
ou do Mercurial 1.3
fonte
Como você volta para uma versão anterior do código?
A partir desta pergunta
@van: Se mais tarde você confirmar, criará efetivamente um novo ramo. Em seguida, você poderá continuar trabalhando apenas neste ramo ou, eventualmente, mesclar o existente.
fonte
Como você reverte um Changeset?
Algumas opções disponíveis
Easy Way (faça o backup de um único conjunto de alterações)
Hard Way (difere e aplique manualmente)
Etapa 1 : Crie um arquivo de correção para reverter o que mudou entre as revisões 107 e 108:
(alternativamente, hg diff -r108 -r107 sem --reverse fará a mesma coisa)
Etapa 2 : aplique o arquivo de correção:
Algumas das diferenças podem falhar na aplicação, por exemplo:
O arquivo .rej conterá o conteúdo do diff que não foi aplicado. Você precisará dar uma olhada.
fonte
hg backout
é para isso que serve?Como você vê o histórico de revisões em um arquivo ou repositório?
Para mostrar o histórico de revisões de repositórios ou arquivos inteiros
ou
E para ver a lista em ordem inversa
fonte
Como você mescla partes de um ramo em outro ramo?
Habilite a extensão 'transplante' em seu arquivo .hg / hgrc
Carregue o ramo de destino e transplante a revisão de destino.
por exemplo: revisão de seleção de cereja 81 do ramo 'foo' para o ramo atual
fonte
graft
comando interno para fazer o mesmo.hg help graft
para mais informaçõesComo você extrai um patch de um conjunto de alterações específico?
Você pode importar isso para outra ramificação com:
fonte