codercss 14 Denunciar post Postado Agosto 10, 2016 Olá a todos, Não sei se este é o melhor local para esta questão, mas cá vai! Caso esteja no local errado agradeço que me informem! Obrigado Configurei pela primeira vez o git numa máquina, que está a servir de servidor. A pasta do git está em /media/local/git Que permissões devo colocar na pasta git e na sua estrutura "/media/local/"? Acabei por colocar a pasta git como utilizador comum e com 777. Fiz bem? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
xanburzum 169 Denunciar post Postado Agosto 12, 2016 depende quem vai acessar Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 12, 2016 E como eu devo "desenhar" os critérios? Como eu devo projectar? Tem algum exemplos de ambientes que possa demonstrar? Compartilhar este post Link para o post Compartilhar em outros sites
xanburzum 169 Denunciar post Postado Agosto 15, 2016 Abaixo segue a tabela com os códigos de permissão (formato octal): | | r | w | x | Descrição | 0 | - | - | - | Nenhuma permissão de acesso. | 1 | - | - | x | Permissão somente de execução (x). | 2 | - | x | - | Permissão somente de gravação (w). | 3 | - | x | x | Permissões de gravação e execução (wx). | 4 | x | - | - | Permissão somente de leitura ®. | 5 | x | - | x | Permissões de leitura e execução (rx). | 6 | x | x | - | Permissões de leitura e gravação (rw). | 7 | x | x | x | Permissão total (leitura, gravação e execução, rwx). Exemplos mais comunsUsaremos o código de cores para facilitar a compreensão quanto ao owner, grupo e outros: Permissão 644:644 ou [rw-r--r--]: Owner com permissão de leitura e gravação, grupo com permissão somente de leitura, outros com permissão somente de leitura.Permissão 755:755 ou [rwxr-xr-x]: Owner com permissão total, grupo com permissão de leitura e execução, outros com permissão de leitura e execução.Permissão 777:777 ou [rwxrwxrwx]: Owner com permissão total, grupo com permissão total, outros com permissão total. Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 15, 2016 Obrigado pela explicação. O que pretendo é ter um servidor onde qualquer pc que se ligue na rede possa fazer um pull. E consequentemente um push. Quais níveis e qual proprietário deve ter essa pasta, git, no servidor? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 15, 2016 Você vai permitir push e pull via SSH, certo? Se todos os usuários fizerem SSH com o usuário dono da pasta (como é no GibHub, onde você faz SSH com o usuário git), basta que o owner tenha as permissões de escrita e leitura (0 755 padrão já resolve). Se os usuários fizerem SSH com seus próprios usuários, recomendo que configure-os no mesmo grupo do usuário git e deixe a pasta com 775. Dessa forma não precisará deixar 777. Meu tutorial completo sobre chmod e permissões: http://rberaldo.com.br/chmod-permissoes-em-sistemas-linux-e-unix-like/ Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 15, 2016 Viva Beraldo, Antes de mais parabéns pelo seu excelentes emails sobre php, aprendo bastante :) Continue esse excelente legado e trabalho que tem criado :) Sim, o objectivo é que os usurário consigam fazer push and pull, via ssh. Pelo quer percebi existe duas maneiras: 1-Todo o developer que entrar na minha rede pode ser acesso aos códigos que estão no git, via ssh, e via usuário git. Terei apenas que lhe passar a pass do utilizador. Ele vai fazer algo como "git clone git@ip/schacon/grit.git 2-Para todos os usuarios que entrarem e quiserem aceder ao reposotório terei que lhes dar acesso diretamente no servidor. A vantagem disso é que tenho um acesso mais controlo, certo? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 15, 2016 Na verdade, o diretório <projeto>.git no servidor não deve ser acessado diretamente. Ele é só um conjunto de dados sobre os arquivos, não os arquivos em si. O correto é sempre fazer um clone do projeto. Esse clone terá a estrutura de arquivos correta. E para isso, basta que o usuário faça um clone via SSH com o próprio usuário git. É só cadastrar as chaves de cada usuário no authorized_keys do usuário git Em outras palavras, use só o primeiro método que você citou. O segundo não te dá mais controle, pois é possível limitar cada chave do authorized_keys, desabilitando acesso ao terminal. Assim a chave só servirá pra autenticar e fazer o clone/push/pull, sem dar acesso ao shell :) Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 17, 2016 Olá, Então terei que fazer o seguinte: Criar um utilizador git; Esse utilizador será owner da pasta; O grupo estará da responsabilidade o root; As permissões, segundo o post do nosso colega xanburzum será de 600. Pois pretendo que o owner consiga ler e escrever mas não quero que ele execute. O resto, o grupo, incluindo o root, e o resto do mundo não tem acesso a nada; A equipa tenho apenas que passar os seguintes dados: user: git; pass: ****** Certo? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 17, 2016 600 está bom, mas vale lembrar que "execução" em uma pasta é entrar nela (comando cd). Com 600, não será possível dar cd na pasta. Se esse for o comportamento desejado, ok, deixe 600 Você pode passar a senha do usuário para todos, sim. Mas eu nunca faria isso. Prefiro utilizar o sistema de chaves (tutorial aqui). Com chaves fica mais mais seguro e organizado Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 18, 2016 Ok....ando um pouco confuso com isto :P O que fiz foi: 1-Criar no servidor uma pasta com as seguintes permissões e users: drwxrwx--- 3 git root 4096 Aug 17 23:21 projects O user git não tem pasta home (tutorial bom: http://www.tecmint.com/add-users-in-linux/); 2-Criei uma pasta, chamada proj1.git com as mesmas permissões e users; 3-No interior dela fiz "git init --bare" (tutorial bom: https://blog.butecopensource.org/criando-um-git-server-local/); No cliente fiz: 1-git clone user@ip_do_git_server:/path/to/my_project Agora estou a ler este site (http://rogerdudler.github.io/git-guide/index.pt_BR.html). E estou a descobrir que ainda não sei mexer com o git :P Mas isso eu já desconfiava hehe, mas vamos lá estudar :) Esbarrei com este site (https://git-scm.com/book/pt-br/v1/Git-no-Servidor-Configurando-Git-no-Servidor) Mas confesso, que neste momento, ainda me baralhou mais. Talvez numa fase mais a frente. Estou a ver este livro (https://www.casadocodigo.com.br/pages/sumario-git-github) Aconselham a leitura? Ou é preferível ler o site do git? Encontrei este artigo: https://www.atlassian.com/git/tutorials/comparing-workflows/centralized-workflow Gostei da explicação! Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 18, 2016 Tenho estes dois artigos sobre Git: http://rberaldo.com.br/git-controlando-versao-de-seus-programas/ http://rberaldo.com.br/git-criando-repositorios-remotos/ Sobre o livro, não conheço, então não vou opinar. Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 18, 2016 Obrigado Beraldo, Segui os seus artigos e consegui montar o ambiente. Mas tive que dar permissões 777, para toda a arvore que recebe os projectos git no servidor. Porque com 600 ou 775 o user comum no pc comum não consegui fazer os push ou pull. É seguro manter o sistema assim? Vou ler sobre as ssh keys, pois é bastante chato ter que ficar a passar a pass do user git todas as vezes que é necessário fazre push ou pull. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 18, 2016 Se o servidor for seu (não compartilhado), não há grande problema. Mas se todos os usuários fazem push/pull com o usuário git, 700 deveria ser suficiente. Que erro aparece ao fazer push e pull? Compartilhar este post Link para o post Compartilhar em outros sites
xanburzum 169 Denunciar post Postado Agosto 22, 2016 acesse: https://help.github.com/articles/set-up-git/ https://help.github.com/articles/generating-an-ssh-key/ https://help.github.com/articles/pushing-to-a-remote/ tem muita coisa boa, vai te ajudar Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 22, 2016 Obrigado xanburzum obrigado pelos artigos, vão ler! Uma questão que me está a mexer com a cabeça :P Já consegui montar o git repositório no servirdor. Estão apenas as voltas com as permissões. Pois só funciona com 777. Apesar de configurar para user git, que não tem pasta home, e usergroup para root, fico preocupado com o 777. Acham, também que é nível a mais? Mas a minha questão é referente ao workflow. Programo no meu ambiente e faço o push commit para o servidor git. Esse servidor também recebe o apache. Como faço para actualizar a versão que está no apache ao mesmo tempo que faço o commit? Ou isso não funciona assim? A ideia era quando fazer o "git commit -am "mesage" ele actualiza-se logo o que está no apache. Estive a explorar o conteúdo do repositório no git servidor, e não vejo lá os ficheiros :P Vejo que existe uma séria de pastas e arquivos, que serve de base de daods para o git, penso eu! Obrigado malta, e caso queiram que abre um novo tópico digam por favor. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 24, 2016 Sobre rodar pull automaticamente, nunca fiz isso, mas encontrei este tutorial: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps 777 me parece exagero. Se todos os usuários fazem login com o usuário dono do repositório, 700 deveria ser suficiente O diretório <projeto>.git não terá os arquivos. Nessa pasta ficam só os diffs de cada commit e outros arquivos do git. Com base nesses dados o git gera a árvore de diretórios ao fazer o clone do projeto Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 24, 2016 Resolvi com nível 700. Talvez antes, por ainda não saber utilizar o git, tive-se feito confusão. Em relação em rodar o pull automaticamente achei uma solução de colocar uma tarefa no crontab -e para rodas todos os dias à meia noite. Essa tarefa iria rodar um script com o comando git pull origin master Na pasta do apache. Apenas vejo vantagem neste processo de utilizar o branch master como versão final. Pois assim estarei sempre seguro que a versão que entra em produção é a versão final. Quando comecei a pesquisar por git fiquei com a ideia que o envio da versão de desenvolvimento para produção era mais prática. Pois fiquem com ideia que o ftp tinha "morrido"! De certa maneira, ainda com os meus conhecimentos básicos, acho que está mais prático e seguro que o ftp. Pois basta aceder no servidor e correr o comando "git pull origin master" e está tudo pronto! Neste livro, https://www.casadocodigo.com.br/pages/sumario-git-github, que já li e aconselho, o autor sugere vários ambientes de desenvolvimento com o git. Um deles é o "Utilizando branches por funcionalidade com um repositório central" que gostei particularmente. Pois utiliza o branche master como versão final e para cada nova feature é criado um branch especifico. Após a aprovação o mesmo é "merge" com o branch master. O que dá para utilizar o script que falei à pouco. Mas top, top será o ambiente "Utilizando branches por etapa de desenvolvimento com um repositório central" que sugere a utilização de branch para "hotfix" e tudo! :) Mas ainda tenho que partir muita unha no git para chegar aí! [uPDATE] Outra coisa que acabei por perceber foi a utilização do git. Antes pensava que o git era um vcs e um sistema de backup. Mas agora percebo que apenas devemos fazer um commit quando acabamos uma etapa importante de uma funcionalidade que estamos a desenvolver. O desenvolvimento de uma nova funcionalidade, que depois será mesclada no projecto final, terá vários commits. O próprio ponto de mesclagem será ele também um commit! Muito bom! Adoro a filosofia! Nota: Eu não sou programador a tempo inteiro. Sou uma pessoa que gosta de programar e de momento estou desempregado, por isso estou a tentar aprender a área para ganhar algum dinheiro! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 25, 2016 A ideia do cron funciona, mas apenas uma vez por dia. Pensei que você queria forçar o pull sempre que um push for feito para o branch master. O Git é muito bom. Bem mais organizado e rápido que usar FTP. Aliás, odeio FTP :P Eu não diria que só devemos fazer commit ao finalizar uma tarefa. Acho que devemos fazer commit sempre que uma etapa da tarefa for finalizada. O push (ou o merge seguido pelo push), sim, deve ser feito apenas depois de finalizar a tarefa. Dentro de uma tarefa, se houver vários commits, podemos desfazer alguma modificação que fizemos simplesmente voltando a versão. Por isso prefiro commitar várias vezes :) Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Agosto 25, 2016 Sim a ideia era fazer o pull sempre que um push for feito. Partilhei a ideia do cron por achar interessante. Mas vou ler os links que me enviou! Como é o seu workflow para o servidor web? Neste momento tenho o projecto no meu pc, onde faço commit de tudo o que vou fazendo. Quando quero enviar para o repositório central faço "git push origin master" e lá vai ele :P A questão que ainda estou preço é como isso fica disponível para o apache. Antes pensava que os ficheiros do projecto ficavam no repositório central. Mas não, o que fica lá é apenas os diff's e mais alguns ficheiros que o git precisa para gerir o sistema. Por isso, agora entendo que precise de fazer o pull na pasta do apache. Mas o que ainda não consegui perceber é se isso pode ser feito quando eu fizer o push no meu pc ou se tenho que aceder ao servidor, via ssh, e fazer lá o pull. Nota: Utilizei o ftp por pouco tempo, mas tive que muitas vezes que apontar num papel, ou arquivo txt, as vezes que fazia update no ftp. E confesso que ficava com medo ao ver os arquivos subir, muitas vezes tive arquivos que não subiram e tinha que andar a fazer overwrite a alguns deles! Medo! Não estou a falar mal do ftp, foi muito bom no seu tempo e talvez ainda seja. Apenas estou a comentar que me sinto mais confiante com o git, apesar de ainda não estar a 100% Compartilhar este post Link para o post Compartilhar em outros sites