Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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/

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.

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")

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

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

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

  • Conteúdo Similar

    • Por marcodotcastro
      Olá Senhores,
       
      gostaria da opinião sobre essa iniciativa,
       
      O objetivo é ajudar profissionais de tecnologia a se desenvolver na área de programação.
       
      http://desenvolvendo.me/analyze
       
      A plataforma analisa as informações do usuário disponíveis no perfil do Github e gera algumas indicadores de produtividade.
       
      Existe uma área para contrato. Se possível, enviar a opinião nessa área, pois toda mensagem vira backlog.
       

    • Por Bergs
      Olá devs, estou com uma dúvida, é possível em uma nova branch subir apenas uma pasta de arquivos para ela?
      Não queria subir as outras pastas nessa branch porque quero fazer isso apenas na branch master. 
      Aproveito também para saber se esse fluxo está correto, qual o fluxo vocês normalmente usam?
       
      Não sei se esse tópico se encaixa na área HTML, qualquer coisa podem me mover para área correta? 
    • Por MateusOFCZ
      Olá, estou desenvolvendo meu TCC no Netbeans usando Java, quando estava fazendo as telas em JFrame, percebi que ele cria uma conexão toda hora que acessa uma tela (http://prntscr.com/op1tjc) fazendo com que "desconecte" o usuário que estava logado, gostaria de saber se tem alguma forma de fazer com que toda vez que troca de tela ele continua com a conexão anterior ao invés de criar uma nova, fazendo com que ele desconecte o usuário que estava logado.

       
       
    • Por MateusOFCZ
      Olá, estou desenvolvendo um projeto de registro de clientes em java no netbeans e usando o MySQL Workbench e Xampp, gostaria de saber se é possível fazer com que o programa fique verificando se está conectado com o banco de dados, e caso não esteja ele mostra uma mensagem pedindo para o usuário se conectar em uma rede, caso ele se conecte o programa irá esconder essa mensagem e funcionará normalmente.

      Eu consegui fazer com que ele mostre se está conectado ou não, porém se eu desligar o servidor ele não atualiza mostrando que está offline, ele continua como online...
    • Por jpierredraw
      Olá pessoal,
      Qualquer um que tenha a url do meu repositório privado consegue baixar e fazer commits? 
      Obrigado!
×

Informação importante

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