Acrescenta um índice com outras páginas.
[cursogit.git] / Colaborando_com_Git.mdwn
index ef5882b..373ff00 100644 (file)
@@ -230,8 +230,13 @@ Portanto, o padrão em versões desde 1.7.0 é impedir que tal branch seja
 atualizado, a não ser que a opção de configuração
 receive.denyCurrentBranch utilize os valores warn, false ou ignore.
 
+Anteriormente à versão 1.7.0, o diretório de trabalho era atualizado
+quando um push era feito. Isso poderia ser perigoso, pois o diretório de
+trabalho poderia conter alterações que não foram gravadas, causando a
+perda de dados.
+
 Mas existe um tipo de repositório que não possui diretório de trabalho,
-e pode evitar problemas como esse. Este tipo de repositório é conhecido
+e pode evitar problemas como esses. Este tipo de repositório é conhecido
 como repositório bare. Ele pode ser criado com a opção --bare de git
 init ou de git clone. Geralmente, por convenção, tais repositórios têm a
 URL terminada em .git.
@@ -252,6 +257,8 @@ Há várias formas de fazê-lo. Veremos aqui algumas delas, utilizando um
 host próprio, que seja acessível ao público alvo, através de SSH, HTTP
 ou git daemon.
 
+### SSH
+
 Publicar através de SSH é simples de ser feito, mas tem algumas
 implicações. Entre elas é o acesso exigido a um shell no host para os
 usuários, dificultando acesso anônimo e criando um novo problema de
@@ -267,3 +274,31 @@ Uma excelente forma de utilizar a publicação via SSH é disponibilizá-la
 de forma somente leitura através de outros métodos, e ter um único
 usuário que possa atualizá-lo, o que resolve vários dos problemas já
 mencionados.
+
+Há duas formas simples para publicar um repositório via SSH. Uma delas é
+criar um bare clone do repositório e fazer a cópia para o host remoto,
+através do método de preferência. Uma opção é scp.
+
+       $ git clone --bare project/
+       Cloning into bare repository 'project.git'...
+       done.
+       $ scp -rq project.git/ git.example.com:/srv/git/alice/
+       $ 
+
+A outra opção é criar um repositório bare no host remoto, e fazer o
+primeiro push.
+
+       alice@git.example.com $ mkdir project.git
+       alice@git.example.com $ cd project.git
+       alice@git.example.com project.git$ git init --bare
+       Initialized empty Git repository in /srv/git/alice/project.git/
+       alice@git.example.com project.git$ 
+       
+       ~/project$ git remote add origin git.example.com:/srv/git/alice/project.git/
+       ~/project$ git push origin master:master
+       Counting objects: 3, done.
+       Writing objects: 100% (3/3), 229 bytes, done.
+       Total 3 (delta 0), reused 0 (delta 0)
+       To git.example.com:/srv/git/alice/project.git/
+        * [new branch]      master -> master
+       ~/project$