Git: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
Linha 19: Linha 19:
     git clone ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS
     git clone ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS


Se já tiver um repos git e quer migrá-lo para SF como origin:
==Se já tiver um repos git e quer migrá-lo para SF como origin==


     cd NOME_REPOS
     cd NOME_REPOS
     git remote rm origin
     git remote rm origin # caso o repo local tenha sido clonado de outro, caso contrário pule isso
     git remote add origin ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS
     git remote add origin ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS
     git config branch.master.remote origin
     git config branch.master.remote origin

Edição das 01h51min de 13 de outubro de 2011

Para uma breve lista de comandos, veja Comandos Git.

Para aprender Git, veja Literatura recomendada pela equipe#Git

Create Repos on Sourceforge

Acesse a conta do projeto por ssh:

   ssh -t USER,PROJECT@shell.sourceforge.net create

Vá ao diretório do projeto:

   cd /home/scm_git/l/la/labmacambira

Crie o diretório com o nome do repositório desejado:

   mkdir NOME_REPOS

Crie o repositório (bare):

   git --git-dir=NOME_REPOS init --shared=all --bare

Pronto, agora você poderá usá-lo:

Clone-o:

   git clone ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS

Se já tiver um repos git e quer migrá-lo para SF como origin

   cd NOME_REPOS
   git remote rm origin # caso o repo local tenha sido clonado de outro, caso contrário pule isso
   git remote add origin ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS
   git config branch.master.remote origin
   git config branch.master.merge refs/heads/master
   git push origin master

Mais informações em http://sourceforge.net/apps/trac/sourceforge/wiki/Git

Iniciando um Repo Git a partir de um projeto já existente

Basta entrar no diretório raiz do projeto e iniciar o repo:

   $ git init

Depois de limpar os arquivos temporários e auxiliares, adicione todo mundo:

   $ git add .

Este comando acima já adiciona toda a árvore.

Dá um 'git status' para ver se não tem algum arquivo lixo. Se tiver, manda um:

   $ git unstage <arquivo>

Para cada arquivo. Pronto! Pode commitar!

Interface Git para Subversion e CVS

Para usar Git como interface para o Subversion: https://sourceforge.net/apps/trac/vxl/wiki/GitSvn

Para usar Git como interface para o CVS: https://sourceforge.net/apps/trac/vxl/wiki/GitCvs

Gerando patches pra comitadas

Muitos projetos nao dao acesso a commitadas diretamente, exigindo submissao de patches. Veja como fazer isso com git format-patch [1]:

Cria-se um branch a partir do master, com suas mudancas. Depois cria-se um patch desse branch referente ao master, executando o seguinte comando a partir desse novo branch:

git format-patch master --stdout > fix_bug_69.patch

Tambem e' util saber dar um squash nos seus commits pro patch ficar mais limpo depois de varias edicoes, ver [2].

Migrar de SVN para GIT

Criamos um repos temporário para baixar o SVN:

   mkdir repos_tmp
   cd repos_tmp
   git svn init URL_DO_SEU_REPOSITORIO_SVN --no-metadata
   git svn fetch

Agora vamos limpar a sujeira deixada pelo SVN, clonando o repos temporário no repos final:

   cd ..
   git clone repos_tmp repos_final
   cd repos_final

E configuramos para usar o SF:

   git remote rm origin
   git remote add origin ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS
   git config branch.master.remote origin
   git config branch.master.merge refs/heads/master
   git push origin master


Migrar de CVS para Git

Exitem diversas maneiras de se converter um repositorio existente para Git. Se o repositorio principal nao sera convertido para Git, ou se o repo principal e' simples, pode-se usar o git cvs. Nesse caso, veja o link: https://sourceforge.net/apps/trac/vxl/wiki/GitCvs

Ver tambem o seguinte link, para o caso de se usar Git com Subversion: https://sourceforge.net/apps/trac/vxl/wiki/GitSvn

Agora, para migrar o repositorio CVS para Git de uma vez por todas, vou descrever um jeito que usei para converter o SIP, o qual tinha um repositorio CVS no sourceforge. Primeiramente, usei o seguinte comando de backup do sourceforge pra baixar o repo CVS:

 rsync -av rsync://siptoolbox.cvs.sourceforge.net/cvsroot/siptoolbox/* .


Segui as instrucoes em Creating Multiple Repositories da pagina https://sourceforge.net/apps/trac/sourceforge/wiki/Git

  • Tenho 4 repositorios dentro do projeto siptoolbox: animal,simpletoolbox,www e siptoolbox
  • Dentro do shell do sourceforge:
mkdir animal simpletoolbox www
git --git-dir=www init --shared=all --bare

este ultimo comando sendo repetido para animal e simpletoolbox.

Em seguida, dei um clone em cada um, depois, para cada modulo (p.ex. www abaixo), editei cvs2git.options colocando o caminho apropriado na string logo apos run_options.set_project

cvs2git --options=../cvs2git.options
cd www
cat ../cvs2svn-tmp/git-{blob,dump}.dat | git fast-import
git reset --hard
git push origin master
rm -rf ../cvs2svn-tmp

Eh isso ae, mais ou menos..


Referencias de migracao CVS para Git


Canal do IRC sobre Git

  1. git ou #github no freenode



Ver Tambem

Comandos Git