Ir para conteúdo
Entre para seguir isso  
DiegoAngra07

NetBenas x Subversion - Pelo que optar?

Recommended Posts

Boa tarde galera, tudo certo?

 

Gostaria de saber a opinião de vocês sobre controles de versão para o NetBeans. Eu trabalhava com C# e o TortoiseSVN e agora troquei de empresa, estou dando uma organizada nos projetos pois os caras ainda não usavam nenhum controle.

 

Minha situação é a seguinte: Programando em PHP no NetBeans 8.0, tanto em Windows para hospedagem no IIS7 - Windows Server, quanto para hospedagens no Apache rodando em Linux. Aqui tem vários projetinhos e sistemas web, possuímos hosting de servidores então boa parte deles nós mesmos hospedamos porém alguma parcela fica hospedada em algum cliente que não dispõe 100% do tempo de internet boa para acessar os sistemas aqui. Estes que ficam fora, eu sincronizo via FTP no NetBeans e programo tudo local na minha máquina (Windows 10). Portanto eu estou procurando um controle de versão que seja bom independente da plataforma e que eu possa talvez centralizar na minha máquina e distribuir entre os servidores depois (tanto externos via FTP se possível quanto os da rede interna).

 

Eu ouvi falar do Git e pesquisei muito sobre ele, meu chefe não aprovou muito pois pelo que entendemos os seus códigos-fontes ficam distribuídos abertamente na internet é isso?

 

Usava o Tortoise como já disse e gostava muito dele. Será que é uma opção? Poderia criar um repositório aqui, sincronizar no NetBeans e depois upar via FTP para os clientes? Ou quem sabe criar repositórios nos clientes e puxar aqui pra minha máquina, alterar e commitar.

 

Não conheço nenhum outro, se tiverem sugestões por favor, manda aí.

 

Valeu galera agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você confundiu Git com Github

 

Git é a ferramenta de controle de versão

GitHub é um serviço que oferece repositórios Git (tanto públicos quanto privados)

 

Você pode criar um repositório Git em uma servidora da empresa. Ninguém verá os códigos.

Se criar no GitHub, aí será público (repositório privado existe, mas é pago)

 

Eu uso Git e acho ótimo. Nunca me dei muito bem com o SVN. Mas é questão de preferência

Brigas entre Git e SVN é igual Linux contra Windows. Sempre há quem defenda um e odeio o outro.

 

Recomendo ler estes meus posts:

http://rberaldo.com.br/git-controlando-versao-de-seus-programas/

http://rberaldo.com.br/git-criando-repositorios-remotos/

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para opcão em cloud gratuita, há o BitBucket, que oferece versionamento tanto em GIT quanto em Mercurial (HG).

A opção gratuíta é para times de desenvolvimento pequenos, até 5 usuários.

 

Aonde eu trabalho, fizemos a migração de SVN para GIT, no BitBucket, de forma gratuita. Nós temos uma equipe pequena de desenvolvimento, mas muitos parceiros que terceirizam o trabalho, estamos fazendo as transações via BitBucket. Como a gama de usuários está crescendo, estamos pensando em adquirir o pacote pago do BitBucket, que fica em torno de U$10/mensais, para 10 usuários.

 

Entre GIT e Mercurial, ambos são excelentes e te darão a mesma gama de possibilidades, só o GIT é mais difundido, conhecido e, como dizem, mais liberal (thug life). O Mercurial diz ser um pouco mais "rígido" que o GIT, mas oferece basicamente os mesmos recursos. Eu não tenho preferência entre eles, apenas gosto de ambos.

 

O SVN, por outro lado, tem algumas limitações quanto a criação de branchs e forks. Na realidade, ele não cria bem uma branch e sim um novo repositório em um outro local. Você até pode sincronizar os repositórios, e para trocar de "branch" deve trocar de pasta. Mas não pode apenas realizar a troca de branch e manter as alterações em desenvolvimento como é possível com GIT e Mercurial.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Beraldo e Gabriel, realmente confundi com GitHub pelo que vi. Vou dar uma olhada nos posts e mais uma pesquisada na internet, baixar o que for preciso e tentar criar uns repositórios.

 

Assim que concluído eu marco como resolvido :D

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegando uma carona no comentário do Gabriel sobre branches do SVN, lembrei de uma coisa que sempre achei péssima no SVN: ele cria diretórios ".svn" ocultos em TODOS os diretórios versionados. É uma bagunça. O git tem apenas um diretório oculto ".git" na raiz do repositório. Tudo fica guardado ali. Bem mais organizado e centralizado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia criar um repositório aqui, sincronizar no NetBeans e depois upar via FTP para os clientes? Ou quem sabe criar repositórios nos clientes e puxar aqui pra minha máquina, alterar e commitar.

 

se começou a usar o Netbenas agora, veja que ele tem suporte ao 3 tipos citados

 

svn https://netbeans.org/kb/docs/ide/subversion.html

git https://netbeans.org/kb/docs/ide/git_pt_BR.html

mercurial https://netbeans.org/kb/docs/ide/mercurial_pt_BR.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegando uma carona no comentário do Gabriel sobre branches do SVN, lembrei de uma coisa que sempre achei péssima no SVN: ele cria diretórios ".svn" ocultos em TODOS os diretórios versionados. É uma bagunça. O git tem apenas um diretório oculto ".git" na raiz do repositório. Tudo fica guardado ali. Bem mais organizado e centralizado

 

Mudaram isso nas últimas versões. Mas mudou de uma bagunça total para uma bagunça centralizada apenas.

 

O único ponto que destaco, é que o TortoiseSVN é bem superior as versões GIT e HG.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia galera,

 

Desculpem a demora mas só pude dar continuidade a esse assunto nessa semana. Estou com alguns problemas, será que podiam me ajudar?

 

Montei uma máquina rodando Ubuntu Server 14.10, instalei SSH, Git e FTP. A máquina vai servir apenas pra repositório de fontes. O SSH e o FTP estão funcionando ok.

 

Configurei o Git, li os artigos que o Beraldo passou, estou sabendo criar os repositórios e tudo mais. Meus problemas agora estão no Windows.

 

Minha máquina Linux está assim:

 

Criei um usuário "paulo" que é meu user para conexão na máquina e no FTP.

Criei um grupo Git que terá os usuários com acesso aos repositórios e adicionei o user Paulo a ele.

 

/home/git - Diretório onde ficarão os repositórios de cada projeto. Está com permissão 770, sendo o proprietário root e o grupo Git.

 

/home/git/Florestal - Diretório do projeto que estou pegando para fazer o primeiro teste. Aqui já criei o repositório Git (git init), adicionei os fontes e comitei.

 

1 - Com TortoiseGit, não consigo clonar o repositório. Estou recebendo o erro:

git did not exit cleanly (exit code 128)

Pesquisei no Google porém não achei a solução, a maioria dos links dá soluções pra quem está usando o GitHub que não é meu caso.

 

2 - Pelo NetBeans, ao tentar clonar o Repositório (Equipe > Git > Clonar), ele está acusando "Credenciais incorretas para o repositório" ou "Não é possível estabelecer conexão com o repositório".

 

Estou com dúvida na maneira correta de clonar o rep. pelas interfaces destes dois programas, não tentei pela linha de comando do Git no Windows pois o objetivo aqui é funcionar pelo NetBeans no mínimo.

 

Na interface de Clone do Tortoise estou informando o seguinte:

 

URL: ssh://paulo@192.168.254.13/~/home/git/Florestal

Directory: C:\inetpub\wwwroot\Florestal

 

Todos os checkboxes desmarcados (inclusive o Loa PuTTY key, pois não sei para que serve, podiam me explicar?)

 

Na interface do NetBeans, eu informo a mesma URL apesar de já ter tentado com "ssh://192.168.254.13/~/home/git/Florestal", "ssh://192.168.254.13/~/git/Florestal", e variações similares. Informo o usuário Paulo e a senha, e não marco para utilizar Chave Privada/Pública que eu imagino que seja a mesma coisa do check no Tortoise.

 

---

 

Poderiam me ajudar para ver onde estou errando? :/

 

Grato desde já por toda a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comece pelo mais simples. Faça o clone pela linha de comando. Se isso funcionar, significa que que o Git está instalado e que você tem acesso ao repositório. Não adianta querer fazer funcionar em outros softwares antes. Comece pelo simples

 

Pra clonar pelo terminal, é necessário usar ".git" no nome do repositório. Você usou ssh://paulo@192.168.254.13/~/home/git/Florestal. Talvez seja necessário usar ssh://paulo@192.168.254.13/~/home/git/Florestal.git (no terminal sim, talvez o Netbeans adicione o ".git")

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Beraldo,

 

Cara funcionou, eu estava a procura na internet ainda e tentei com a URL "ssh://paulo@192.168.254.13:/home/git/Florestal" e deu certo, usando dois pontos entre o server e o diretório em vez de til ~

 

Funcionou via terminal e pelo Tortoise, mas no NetBeans não, ele dá o mesmo erro porém desta vez instantâneo nem chega a pensar ou tentar conectar eu acho. Você usa o Git no NetBeans? Sabe o que pode ser?

 

Quanto ao .git, enquanto lia as soluções na web eu vi que por convenção é adicionado .git ao final de diretórios que servirão apenas para armazenar arquivos certo? Quando usamos o comando "git --bare init". Eu tentei fazer desta forma inicialmente pois o diretório no Linux não será usado para trabalho, eu apenas iria dar o push do Windows pra lá. Eu consegui criar o repositório porém tive dificuldades em adicionar arquivos a ele, aí fiz o que você disse no último post, optei pelo simples e deixei essa questão do init --bare de lado por hora.

 

Mas enfim, então o .git deve ir em todos os repositórios não só nos que não sejam de trabalho?

 

Tu pode me ajudar com o problema do NetBeans?

 

Obrigado mais uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usar "nome_do_diretorio.git" é um costume, não uma exigência. Você pode criar o diretório sem ".git", assim como pode criar uma imagem com extensão ".qualquer_coisa". Extensões não servem pra nada. São só convenções, não obrigações

 

Não uso Netbeans. Mas se o erro envolve credenciais, verifique se está usando a chave SSH correta (caso você esteja usando chave em vez de login/senha)

 

Eu ainda recomendo usar pela linha de comando. Acho mais prático e você detém mais controle sobre o que está acontecendo, commitando etc

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é como eu disse no primeiro post de hoje, eu não estou usando chave. Tu pode me dizer ou apontar um link de como eu passo a usar uma?

 

Atualmente to fazendo só o login e senha normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você usa windows, terá de gerar as chaves pelo Putty. Tendo a chave gerada, pegue o conteúdo da pública (nome_da_chave.pub) e inclua no ~/.ssh/authorized_keys do usuário git no servidor linux

 

A ideia geral é esta:

http://rberaldo.com.br/usando-o-ssh/

 

Depois, no Netbeans deve haver algum lugar onde especificar a chave privada a ser utilizada

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Muito obrigado Beraldo, consegui criar as chaves e aprender a utilizá-las no Tortoise, NetBeans e PuTTY. O problema no NetBeans era que a URL não devia ter nem dois pontos e nem til, ou seja ficou "ssh://192.168.254.13/home/git/Florestal".

 

Umas últimas dúvidas que gostaria de tirar pra ficar com o Git afiado na cabeça:

 

1 - Quais as permissões corretas pra aplicar aos repositórios no Linux? Eu posso rodar um chmod -r no diretório todo ou tem problema de algum arquivo interno do Git ser mudada a permissão?

 

2 - Eu li durante as buscas na net que o Checkout do Git é totalmente diferente do SVN. No caso do SVN o Checkout era igual ao Clone do Git (baixar fontes do repositório). Tu pode me dizer o que significa o Checkout do Git?

 

3 - Qual a melhor prática de backup para o servidor de repositórios? Fazendo backup do diretório /home/git onde estarão todos os repositórios, basta? Ou é melhor fazer um Clone dos repositórios como backup (numa máquina de backup digamos, eu programo uma tarefa para ficar baixando do servidor como forma de backup).

 

Grato mais uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema no NetBeans era que a URL não devia ter nem dois pontos e nem til, ou seja ficou "ssh://192.168.254.13/home/git/Florestal".

Interessante.

Tem outro programa meio chato com o til. Se não me engano é o SSHFS. Tem que colocar path completo sempre :P

 

 

 

1 - Quais as permissões corretas pra aplicar aos repositórios no Linux? Eu posso rodar um chmod -r no diretório todo ou tem problema de algum arquivo interno do Git ser mudada a permissão?

Se rodar um "-r" geral, vai tirar todas as permissões de leitura, inclusive pro próprio dono.

Você disse que deixou 770. 750 seria melhor, já que evita que outros (do mesmo grupo) escrevam no diretório.

Mais sobre CHMOD aqui: http://rberaldo.com.br/chmod-permissoes-em-sistemas-linux-e-unix-like/

 

2 - Eu li durante as buscas na net que o Checkout do Git é totalmente diferente do SVN. No caso do SVN o Checkout era igual ao Clone do Git (baixar fontes do repositório). Tu pode me dizer o que significa o Checkout do Git?

O comando checkout muda de branch ou recupera um arquivo de uma versão específica.

Veja: http://git-scm.com/docs/git-checkout

 

3 - Qual a melhor prática de backup para o servidor de repositórios? Fazendo backup do diretório /home/git onde estarão todos os repositórios, basta? Ou é melhor fazer um Clone dos repositórios como backup (numa máquina de backup digamos, eu programo uma tarefa para ficar baixando do servidor como forma de backup).

Se fizer backup dos diretório do servidor, terá sempre uma cópia dos repositório propriamente ditos, não dos clones. De fato, é melhor assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas sem permissão de escrita os usuários conseguem dar um Push pro repositório?

 

Eu imaginei / criei o grupo "git" de forma que eu adicione cada usuário que vai usar os repositórios a esse grupo para que eles possam baixar / alterar / enviar arquivos nos mesmos. Não é assim que funciona? xD

 

Aí pra cada user eu criaria uma chave SSH como fiz pro meu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se todos estiverem com suas chaves públicas no authorized_keys do usuário "git", eles farão push e pull usando git@seu_servidor. Ou seja, eles vão usar o usuário git, logo, basta ter permissão para o usuário. Assim, até chmod 700 resolve.

 

Se for usar login/senha, os usuários deverão estar no grupo do git, aí precisará de permissão para o grupo (770)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Muito obrigado por toda a ajuda Beraldo, estou encerrando o tópico e te deixando em paz :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por Felipe_N22
      Estou rodando um projeto no netbeans em Java Web, mas quando eu compilo ele só atualiza as alterações que eu faço no index, as demais alterações ele ignora.
       
      Qual seria o problema ?
    • Por luisfeliperm2
      Uso o github, mas ele não tem repositório privado free
    • Por kim.y
      Boa noite pessoal,
       
      Estou com uma dúvida sobre o que realmente é o Stage Changes, li algumas coisas na internet mas não entendi muito bem.
       
      Se eu fizer um merge e aparecer Stage Changes algumas alterações no stage changes que eu não fiz na minha branch o que isso quer dizer?
       
      Que se eu der commit no merge esses códigos vão fazer parte da minha branch?
       
      E se eu der Unstage e depois Undo quando for fazer um merge na branch master prod pode apagar algum código que alguém fez antes que eu?
       
      Agradeço desde já!
    • Por guzulino
      Durante a criação de um projeto meu, estava criando as validações e tal, e depois comecei a colocar elas em funções para poder usar em outras páginas, até aí blz, só que do nada eu comecei a perceber que um aviso "O tamanho do método é de 78 linhas (20 permitido), eu uso o Netbeans para fazer, pois conhecer quase todos os atalhos e recursos dele, mas não sei agora se é uma viagem do programa para usar "boas maneiras" na hora de programar ou se pode realmente dar algum problema, apesar de que no código até agora não aconteceu nenhum erro.
    • Por LeoDias
      Olá, tudo bom?
      Galera do meu  Minha dúvida parece um pouco “tosca”, mas realmente estou tendo uma certa dificuldade.
      Estou desenvolvendo um sistema de Clientes em java SE. Na parte de cadastro coloquei um menu “Cliente” em seguida dois itens menu “Novo Integrante” que sua função é chamar um formulário de cadastro para novos clientes que estão conhecendo o restaurante pela primeira vez. Até ai ok! O segundo item menu que é o “x” dessa questão. O proprietário do restaurante já possuía um sistema antigo que contem clientes de vários anos; eu pretendo desenvolver um outro campo para cadastrar esses clientes em meu sistema, separadamente do “Novo Integrante”. Necessito de editar o texto do objeto “item menu” (renomeá-lá corretamente). Só que estou sem nenhuma ideia  de qual nome devo colocar, eu poderia colocar por exemplo: Clientes Antigo, mas não acho que seria legal e também não acho que seja profissional. Pessoal preciso de sugestões. Agradeço! 
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.