PDA

View Full Version : Varios Desenvolvedores X Uma Workspace



Fernando Faria
5-Jun-2019, 07:01 AM
Olá pessoal

Estou com uma dúvida antiga e creio que muitos devem passar pelo mesmo problema.

Até agora, eu tinha uma única máquina de desenvolvimento, então minha workspace sempre ficou em uma pasta no servidor.
Recentemente precisei montar uma 2a maquina de desenvolvimento acessando a mesma workspace.

Abro a workspace normalmente na maquina 1, compilo e executo o projeto normalmente.
Ao abrir a workspace na maquina 2 e tentar compilar o projeto, o Studio informa que meus pacotes pre-compilados precisam ser recompilados e pede para faze-lo antes de continuar.

Embora os pacotes não tenham sofrido nenhuma alteração, sempre que eu alterno de maquina, o Studio dá a mesma mensagem, ou seja, ele (Studio) não entende que está tudo OK e pede sempre para pre-compilar os pacotes novamente antes de compilar o projeto principal. Como eu trabalho com libraries pre-compiladas, eu tenho que fechar a workspace principal, abrir a workspace da library, pre-compilar os pacotes e só depois abrir a workspace principal e compilar o projeto.

Sei que muitos irão dizer para deixar a workspace em uma pasta local, mas quando existem mais de um desenvolvedor trabalhando no mesmo projeto, isso fica inviável, principalmente por conta da sincronização das telas.

Outro detalhe é que não é possivel abrir a mesma workspace em mais de uma maquina ao mesmo tempo por causa dos arquivos .loc

Como contornar tudo isso, visto que em alguns casos, é necessário que vários desenvolvedores trabalhem na mesma workspace, porém em módulos distintos no projeto?

Obrigado

Renato.Antonacci
5-Jun-2019, 07:28 AM
Bom dia Fernando

Você já deve conhecer, mas nesta situação vai ter que partir para um software de controle de versão. Aqui somos em três trabalhando na mesma WorkSpace durante todo o dia, e seria impossível de ser feito sem um controle deste. Aqui usamos o Tortoise SNV a vários anos, que é gratuito e funciona perfeitamente.

Resumidamente, você terá os fontes salvos dentro do controle do Tortoise no servidor e cada máquina ira gerenciar uma cópia desta versão.

Hoje eu não me imagino sem o SNV mais, pois ele vai muito além do simples gerenciamento de versões.

Salvadori
5-Jun-2019, 07:41 AM
Tudo bem Fernando, tenho uma breve experiência com esse cenário, no meu caso utilizamos o vdf 19.1 com desenvolvimento web, inicialmente os arquivos estavam no servidor, e o servidor mapeado como uma unidade no pc local, e o .SWS e config.ws devidamente apontando para os diretórios necessários, cada desenvolvedor utilizava um .SWS diferente, estavamos em 7...trocando alguma experiência com o pessoal daqui, e analisando o fluxo de trabalho com o studio, percebi que é muito inviável esse cenário, o studio não trabalha bem com esse compartilhamento de arquivos, não encontrei uma solução que resolve-se os problemas que eu tinha, os principais eram:

-Toda vez que você executava o projeto (Run F5) ele compilava, não importa se algo foi alterado ou não <- alto impacto na produtividade.

-Muitas vezes o studio parava de responder enquanto compilava, eu acredito por alguém que também poderia estar compilando mo mesmo momento, e acaba criando algum lock em algum arquivo.

-Os erros que você tem, por exemplo quando tenta abrir a mesma workspace no .loc, no desktop, não consegui achar alternativa.

enfim, como nosso desenvolvimento cresceu, começamos a ter bastante problema em compartilhar os arquivos, a solução foi implantar um controlador de versão, os famosos SVN, Git, Subversion, para cada um ter os arquivos em sua máquina, mesmo assim o ínicio sofremos um pouco por que o studio cria muitos arquivos temporários diferentes em cada máquina para gerenciar o desenvolvimento, até configurar e excluir do "controlador" esses arquivos temporários levou um tempinho...

pra resumir, hoje trabalhamos em 6 no mesmo projeto, aumentamos a produtividade, criamos Logs dos arquivos alterados, e reduzimos os erros a zero, então te recomendo avaliar um controlador de versão de arquivos, antes de um "workaround" para tu seguir trabalhando da maneira atual.

Samuel Pizarro
5-Jun-2019, 08:28 AM
Fernando,

Esse problema nao se restringe ao VDF. Todo mundo que tem time de desenvolviemento sofre do mesmo problema.

É por isso que os controladores de versoes foram inventado.. decadas atras.. Não perca tempo tentando reinventar a roda e workarrounds
Qto antes vc adotar os padroes mais cedo ira colher os beneficios....

Sim, eh uma curva de aprendizado,e ajustes... mas vc nao ira se arrepender.. Sugiro o git.. MAs ai eh questao de preferencias..

[]s

Queiroz
5-Jun-2019, 01:38 PM
Fernando,

temos o mesmo problema, estamos usando o GIT.

Queiroz

Fernando Faria
6-Jun-2019, 06:10 AM
Pessoal,

Em primeiro lugar, muito obrigado pelas respostas.

Eu fiz um pequeno teste aqui.

1. Abri a workspace na 1a maquina, pre-compilei as libraries, compilei o projeto principal, executei normalmente e depois fechei tudo (projeto principal e Studio).
2. Fui na 2a maquina, abri a workspace e pedi pra compilar o projeto principal. De imediato o Studio identificou algo nos pacotes e pediu para pre-compilar novamente as libraries ANTES de compilar o projeto. Pre-compilei as libraries, compilei o projeto, executei e fechei tudo.
3. Voltei na 1a maquina e abri a workspace. Ao tentar compilar o projeto, o Studio pediu novamente para eu pre-compilar as libraries.

Diante deste cenário, eu penso o seguinte:

Usar SVN irá resolver o problema de sincronização das telas para que mais de um desenvolvedor possa trabalhar no mesmo projeto, porém não resolve o problema dos pacotes pre-compilados, que no meu caso, tenho que pre-compilar cada vez que eu abro o projeto principal em uma maquina diferente da anterior.

Aos que já usam um SVN, alguém teve esse problema com libraries pre-compiladas? No meu caso estou usando libraries desenvolvidas pelo Ivan, da Acronsoft.


Grato

Salvadori
6-Jun-2019, 06:19 AM
Oi Fernando, também utilizo as libs do Ivan, como NFeLibrary, MenuFlexLibrary, MDFeLibrary etc... elas ficam no meu diretório AppSrc\Librarys do meu projeto, utilizo Git, e nunca preciso pré-compilar elas.

Se eu puder te ajudar com alguma informação mais específica por favor pergunte, estarei a disposição.

PS: Mesmo quando utilizava a base compartilhada no servidor eu não precisava pre-compilar.

Renato.Antonacci
6-Jun-2019, 07:30 AM
Bom dia Fernando

Sim, uso o Tortoise SVN desde 2009, que foi quando adquirimos a NFeLibrary da AcronSoft e não temos este problema. Compilamos em cada máquina isoladamente e somente copiamos para a rede o .EXE resultante da compilação. Uso também outras Libraries além da NFeLibrary. Veja abaixo


12851

Samuel Pizarro
6-Jun-2019, 06:58 PM
Pessoal. O fernando esta falando de pre-compilacao de pacotes de libraries e nao da compilação do projeto em si.

Fernando. Ao passa usar svn e afins vc precisa descentralizar Tudo. Inclusive as libraries.
Pelo jeito vc deixou as libraries ainda compartilhadas entre os desenvolvedores certo?

Entao, basta vc deixa-las locais, assim como as workspaces dos peojetos.
Voce pode ate criar repositorios svn/fit pra elas tb, ja que elas sao uma worksapce com codigo fonte como outra qualquer e ter um controle de versao das mesmas faz todo sentido. Voce so nao pode incluir o arquivo gerado pela pre-compilação no controle do repositorio. Esse precisa ficar de fora, assim como os exes dos projetos tb nao são incluídos.

abcs

uandzleonel
20-Jun-2019, 12:28 PM
Aqui utilizamos o svn, possuímos arquivos pré compilados e não temos problemas, os mesmos ficam no controle e todos tem uma cópia.

Agora aproveitando o tópico...
Aqui nós deixamos apenas o arquivo filelist.cfg compartilhado para todos acessarem e tudo funciona perfeitamente. Mas como ficaria isso no git?
Não é necessário deixar compartilhado esse arquivo? Quem já utiliza o git poderia dar um help?

Samuel Pizarro
21-Jun-2019, 03:05 PM
No git o conceito eh outro. Nao existe lock dos files pois ha N repositorios descentralizados. Cada desenvolvedor trabalha em seu proprio repositorio local. Entao nada eh compartilhado!

uandzleonel
24-Jun-2019, 07:21 PM
No git o conceito eh outro. Nao existe lock dos files pois ha N repositorios descentralizados. Cada desenvolvedor trabalha em seu proprio repositorio local. Entao nada eh compartilhado!
Show. Eu tinha ficado na dúvida por conta do filelist.cfg e DDClassList.xml controlarem algumas coisas. Estamos estudando para migrar para o git. Grato.

Cleber Buzato de Lima
16-Jul-2019, 06:06 AM
Bom dia,
apesar de já fazer um tempo depois do ultimo post deste assunto...
tem uma matéria falando sobre a utilização do GIT no Dataflex.

https://www.dataflex.wiki/index.php/Using_GIT_for_Dataflex_Development

Espero ajudar.

[]´s