SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
TCHELINUX 2007




             Mercurial


      Douglas Schilling Landgraf
      <dougsland@tchelinux.org>

              Fábio Olivé
         <olive@tchelinux.org>



Universidade Federal do Rio Grande do Sul
  Porto Alegre, 1 de Dezembro de 2007
O que é Mercurial ?

   Mercurial
        Sistema para controle de versões distribuído


   Autor inicial:
        Matt Mackall


   Homepage:
        http://selenic.com/mercurial


   Licença:
        GPL v2
Mercurial infos


   Mercurial ou hg ?

   Desenvolvido em:
       Python e C


   Plataformas suportadas:
       Linux, *BSD, Mac OS, Solaris, Windows
Centralizado x Descentralizado


   Desenvolvedores não precisam estar “online”


   Repositórios são clonados por qualquer pessoa


   Crash no servidor de controle de versão e agora ?


   Sem restriçoes de permissão para alterações
Instalação – versão > 0.9.4
   Debian/Ubuntu/Kubuntu:
       shell$> sudo apt-get install mercurial -y


   Instalação Unix:
       http://www.selenic.com/mercurial/wiki/index.cgi/UnixInstall



   Instalação Windows:
       http://www.selenic.com/mercurial/wiki/index.cgi/WindowsInstall


   Binários:
       http://mercurial.berkwood.com/
Conceitos

   Repositório
       Onde o mercurial armazena os arquivos


   Changeset
       Identificador do commit

   Tip
       Última alteração

   Branch / Merge
Baixando um projeto (DEMO)



   shell$> hg clone http://hg.host.com/projeto
.hg/hgrc


   Arquivo de configuração do Mercurial
       Nome do autor
       Email
       etc..
Alterando... (DEMO)

shell$> vi arquivo.c


O arquivo foi alterado ?
shell$> hg status arquivo.c


ARQUIVO ERRADO tem como voltar ?
shell$> hg revert arquivo.c
shell$> hg status arquivo.c
Arquivo .orig ?
Rollback (DEMO)


shell$> vi arquivo.c
shell$> hg commit


Voltar alteração...
shell$> hg rollback
Removendo um arquivo (DEMO)


shell$> hg remove arquivo.c
shell$> hg commit


E para adicionar arquivos e diretórios ?
Subindo alterações (DEMO)



   projeto$> hg push
Histórico (DEMO)



   projeto$> hg log arquivo.c
Atualizando projeto (DEMO)



   projeto$> hg pull -u (update)
Marcando tag (DEMO)



   projeto$> hg tag v1.0
Diff


   O que foi alterado na revisão XYZ ?
       ~projeto> hg diff -r 3dd2843e1043 arquivo.c

   Eu alterei o arquivo, como eu gero o patch ?
       ~projeto> hg diff arquivo.c
Branch e Merge

   Criando um Branch
       shell$> hg branch B-nova-feature
       shell$> hg commit -m “Branch para nova feature xyz”
       shell$> hg checkout B-nova-feature
    <Nestes momento o desenvolvedor faz alterações para o branch>
       shell$> hg commit
                                


   Merge com o projeto original
       shell$> hg checkout default
       shell$> hg merge B-nova-feature
       shell$> hg commit
MQ Series (DEMO)
   shell$> hg qinit
   shell$> hg qnew patch-setaCom
   shell$> vi arquico-com.c
   shell$> hg qrefresh
   shell$> cat .hg/patches/patch-setaCom
   shell$> hg qdiff


   shell$> hg qnew patch-setaUSB
   shell$> hg qtop
   shell$> hg qpop
   shell$> hg qpush


   shell$> hg qapplied
   shell$> hg qseries
Criando um servidor hg (WEB)

   Adicionar usuário hg
       shell$> sudo adduser hg


   Copiar o hgwebdir (“index”)
       shell$> cp /usr/share/doc/mercurial/examples/hgwebdir.cgi /home/hg


       shell$> chmod +x /home/hg/hgwebdir.cgi


       shell$> vi /home/hg/hgweb.config
Criando um servidor hg (WEB)
                hgweb.config
[collections]
/home/hg = /home/hg


[web]
style = gitweb
allow_archive = bz2 gz zip
contact = Douglas Landgraf, dougsland@tchelinux.org
push_ssl = false
description = Repositorio
allow_push = dougsland
Criando um servidor hg (WEB)
   Apache
       shell$> sudo apt-get install apache2



   Habilitando módulo rewrite
       shell$> sudo cp /etc/apache2/mods-available/rewrite.load
        /etc/apache2/mods-enabled/


   Usuários de Commit (push):
       shell$> cd /home/hg
       shell$> htpasswd -c htpasswd usuario


   Default
       shell$>sudo vi /etc/apache2/sites-available/default
Criando um servidor hg (WEB)
 /etc/apache2/sites-available/default


NameVirtualHost *
<VirtualHost *>
  DocumentRoot /home/hg/
  <IfModule mod_rewrite.c>
         RewriteEngine on
         RewriteRule ^/(.*) /home/hg/hgwebdir.cgi/$1
  </IfModule>
Continuação
 /etc/apache2/sites-available/default

<Directory /home/hg/>
          DirectoryIndex hgwebdir.cgi
          AddHandler cgi-script .cgi
          Options ExecCGI Indexes FollowSymLinks MultiViews
          Order allow,deny
          Allow from all
          AuthUserFile /home/hg/htpasswd
          AuthName "Repositorio"
          AuthType Basic
          <Limit POST PUT>
               Require valid-user
          </Limit>
     </Directory>
</VirtualHost>
Criando um servidor hg (WEB)
   Criando o projeto no repositório:
    shell$> cp projeto /home/hg/
    shell$> cd projeto


    ~hg/projeto$> hg init
    ~hg/projeto$> hg add
    ~hg/projeto$> hg commit
    ~hg/projeto$> vi .hg/hgrc


    [web]
    contact = Douglas Landgraf <dougsland@gmail.com>
    description = Projeto test
    push_ssl = false
    allow_push = dougsland, douglas
Criando um servidor hg (WEB)
                    Pronto!

   Reinicie o Apache
    shell$> sudo /etc/init.d/apache restart


   Testar!
    shell$> lynx http://127.0.0.1
    shell$> hg clone http://127.0.0.1/projeto
Migrando projetos
        From: (Subversion/CVS) To: hg

   hgsvn
       http://cheeseshop.python.org/pypi/hgsvn




   Tailor
       http://progetti.arstecnica.it/tailor
Exemplo de projetos que utilizam
                  Mercurial
   LinuxTV
       hg clone http://linuxtv.org/hg/v4l-dvb



   OpenSolaris
       hg clone e ssh://anon@hg.opensolaris.org/hg/onnv/onnv-gate


   Xen
       hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg


   OpenJDK
       hg clone http://hg.openjdk.java.net/jdk7/MASTER
Existe interface gráfica?

   HgkExtension
       shell$> hg view


   gtools (status, log e commit)
       http://www.robotbattle.com/gtools/


   Mercurial eclipse plugin
       http://www.vectrace.com/mercurialeclipse/


   GUIClients disponíveis (página oficial):
       http://www.selenic.com/mercurial/wiki/index.cgi/GUIClients
Guia de utilização



   Disponível em:
       http://www.ivy.fr/mercurial/ref/v1.0/
TCHELINUX 2007




Dúvidas e Sugestões?

  Douglas Schilling Landgraf
  <dougsland@tchelinux.org>

         Fábio Olivé
    <olive@tchelinux.org>

Weitere ähnliche Inhalte

Was ist angesagt?

Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoDiogo Lucas
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com gitHumberto Streb
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantesMario Ernesto
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Jonathan Célio
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Wallison Marra
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Wellington Silva
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerWellington Silva
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoSérgio Lima
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 

Was ist angesagt? (20)

Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolso
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com git
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantes
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Git+github
Git+githubGit+github
Git+github
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
Vamos falar de docker
Vamos falar de dockerVamos falar de docker
Vamos falar de docker
 
Docker
DockerDocker
Docker
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 

Ähnlich wie Mercurial - Douglas Schilling Landgraf e Fábio Olivé

Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.Rafael Ivan
 
Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Wellington Silva
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIRudá Almeida
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresasRafael Gomes
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Tchelinux
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteWaldyr Felix
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioMarcos Antônio de Souza Silva
 

Ähnlich wie Mercurial - Douglas Schilling Landgraf e Fábio Olivé (20)

Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.
 
Git - Visão Geral
Git - Visão GeralGit - Visão Geral
Git - Visão Geral
 
Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLI
 
Git + git hub
Git + git hubGit + git hub
Git + git hub
 
Controle de versão e colaboração com Git
Controle de versão e colaboração com GitControle de versão e colaboração com Git
Controle de versão e colaboração com Git
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprio
 

Mehr von Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 

Mehr von Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 

Kürzlich hochgeladen

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Mercurial - Douglas Schilling Landgraf e Fábio Olivé

  • 1. TCHELINUX 2007 Mercurial Douglas Schilling Landgraf <dougsland@tchelinux.org> Fábio Olivé <olive@tchelinux.org> Universidade Federal do Rio Grande do Sul Porto Alegre, 1 de Dezembro de 2007
  • 2. O que é Mercurial ?  Mercurial  Sistema para controle de versões distribuído  Autor inicial:  Matt Mackall  Homepage:  http://selenic.com/mercurial  Licença:  GPL v2
  • 3. Mercurial infos  Mercurial ou hg ?  Desenvolvido em:  Python e C  Plataformas suportadas:  Linux, *BSD, Mac OS, Solaris, Windows
  • 4. Centralizado x Descentralizado  Desenvolvedores não precisam estar “online”  Repositórios são clonados por qualquer pessoa  Crash no servidor de controle de versão e agora ?  Sem restriçoes de permissão para alterações
  • 5. Instalação – versão > 0.9.4  Debian/Ubuntu/Kubuntu:  shell$> sudo apt-get install mercurial -y  Instalação Unix:  http://www.selenic.com/mercurial/wiki/index.cgi/UnixInstall  Instalação Windows:  http://www.selenic.com/mercurial/wiki/index.cgi/WindowsInstall  Binários:  http://mercurial.berkwood.com/
  • 6. Conceitos  Repositório  Onde o mercurial armazena os arquivos  Changeset  Identificador do commit  Tip  Última alteração  Branch / Merge
  • 7. Baixando um projeto (DEMO)  shell$> hg clone http://hg.host.com/projeto
  • 8. .hg/hgrc  Arquivo de configuração do Mercurial  Nome do autor  Email  etc..
  • 9. Alterando... (DEMO) shell$> vi arquivo.c O arquivo foi alterado ? shell$> hg status arquivo.c ARQUIVO ERRADO tem como voltar ? shell$> hg revert arquivo.c shell$> hg status arquivo.c Arquivo .orig ?
  • 10. Rollback (DEMO) shell$> vi arquivo.c shell$> hg commit Voltar alteração... shell$> hg rollback
  • 11. Removendo um arquivo (DEMO) shell$> hg remove arquivo.c shell$> hg commit E para adicionar arquivos e diretórios ?
  • 12. Subindo alterações (DEMO)  projeto$> hg push
  • 13. Histórico (DEMO)  projeto$> hg log arquivo.c
  • 14. Atualizando projeto (DEMO)  projeto$> hg pull -u (update)
  • 15. Marcando tag (DEMO)  projeto$> hg tag v1.0
  • 16. Diff  O que foi alterado na revisão XYZ ?  ~projeto> hg diff -r 3dd2843e1043 arquivo.c  Eu alterei o arquivo, como eu gero o patch ?  ~projeto> hg diff arquivo.c
  • 17. Branch e Merge  Criando um Branch  shell$> hg branch B-nova-feature  shell$> hg commit -m “Branch para nova feature xyz”  shell$> hg checkout B-nova-feature <Nestes momento o desenvolvedor faz alterações para o branch>  shell$> hg commit   Merge com o projeto original  shell$> hg checkout default  shell$> hg merge B-nova-feature  shell$> hg commit
  • 18. MQ Series (DEMO)  shell$> hg qinit  shell$> hg qnew patch-setaCom  shell$> vi arquico-com.c  shell$> hg qrefresh  shell$> cat .hg/patches/patch-setaCom  shell$> hg qdiff  shell$> hg qnew patch-setaUSB  shell$> hg qtop  shell$> hg qpop  shell$> hg qpush  shell$> hg qapplied  shell$> hg qseries
  • 19. Criando um servidor hg (WEB)  Adicionar usuário hg  shell$> sudo adduser hg  Copiar o hgwebdir (“index”)  shell$> cp /usr/share/doc/mercurial/examples/hgwebdir.cgi /home/hg  shell$> chmod +x /home/hg/hgwebdir.cgi  shell$> vi /home/hg/hgweb.config
  • 20. Criando um servidor hg (WEB) hgweb.config [collections] /home/hg = /home/hg [web] style = gitweb allow_archive = bz2 gz zip contact = Douglas Landgraf, dougsland@tchelinux.org push_ssl = false description = Repositorio allow_push = dougsland
  • 21. Criando um servidor hg (WEB)  Apache  shell$> sudo apt-get install apache2  Habilitando módulo rewrite  shell$> sudo cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/  Usuários de Commit (push):  shell$> cd /home/hg  shell$> htpasswd -c htpasswd usuario  Default  shell$>sudo vi /etc/apache2/sites-available/default
  • 22. Criando um servidor hg (WEB) /etc/apache2/sites-available/default NameVirtualHost * <VirtualHost *> DocumentRoot /home/hg/ <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/(.*) /home/hg/hgwebdir.cgi/$1 </IfModule>
  • 23. Continuação /etc/apache2/sites-available/default <Directory /home/hg/> DirectoryIndex hgwebdir.cgi AddHandler cgi-script .cgi Options ExecCGI Indexes FollowSymLinks MultiViews Order allow,deny Allow from all AuthUserFile /home/hg/htpasswd AuthName "Repositorio" AuthType Basic <Limit POST PUT> Require valid-user </Limit> </Directory> </VirtualHost>
  • 24. Criando um servidor hg (WEB)  Criando o projeto no repositório: shell$> cp projeto /home/hg/ shell$> cd projeto ~hg/projeto$> hg init ~hg/projeto$> hg add ~hg/projeto$> hg commit ~hg/projeto$> vi .hg/hgrc [web] contact = Douglas Landgraf <dougsland@gmail.com> description = Projeto test push_ssl = false allow_push = dougsland, douglas
  • 25. Criando um servidor hg (WEB) Pronto!  Reinicie o Apache shell$> sudo /etc/init.d/apache restart  Testar! shell$> lynx http://127.0.0.1 shell$> hg clone http://127.0.0.1/projeto
  • 26. Migrando projetos From: (Subversion/CVS) To: hg  hgsvn  http://cheeseshop.python.org/pypi/hgsvn  Tailor  http://progetti.arstecnica.it/tailor
  • 27. Exemplo de projetos que utilizam Mercurial  LinuxTV  hg clone http://linuxtv.org/hg/v4l-dvb  OpenSolaris  hg clone e ssh://anon@hg.opensolaris.org/hg/onnv/onnv-gate  Xen  hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg  OpenJDK  hg clone http://hg.openjdk.java.net/jdk7/MASTER
  • 28. Existe interface gráfica?  HgkExtension  shell$> hg view  gtools (status, log e commit)  http://www.robotbattle.com/gtools/  Mercurial eclipse plugin  http://www.vectrace.com/mercurialeclipse/  GUIClients disponíveis (página oficial):  http://www.selenic.com/mercurial/wiki/index.cgi/GUIClients
  • 29. Guia de utilização  Disponível em:  http://www.ivy.fr/mercurial/ref/v1.0/
  • 30. TCHELINUX 2007 Dúvidas e Sugestões? Douglas Schilling Landgraf <dougsland@tchelinux.org> Fábio Olivé <olive@tchelinux.org>