Sunday 22 April 2018

Estratégia de controle de revisão de versão a sugerir


A OSS Watch fornece conselhos e orientações imparciais sobre o uso, desenvolvimento e licenciamento de software livre, software de código aberto e hardware de código aberto.


Se você quiser saber mais sobre qualquer um desses tópicos, somos as pessoas a perguntar.


home & gt; recursos & gt; notas informativas & gt; O que é o controle de versão? Por que é importante para a devida diligência?


O que é o controle de versão? Por que é importante para a devida diligência?


por Stuart Yeates em 1 de janeiro de 2005, última atualização 9 de maio de 2018.


Introdução.


Um sistema de controle de versão (também conhecido como Revision Control System) é um repositório de arquivos, muitas vezes os arquivos para o código fonte de programas de computador, com acesso monitorado. Todas as mudanças feitas na fonte são rastreadas, juntamente com quem fez a mudança, por que elas fizeram, e referências a problemas corrigidos, ou aprimoramentos introduzidos pela mudança.


Os sistemas de controle de versões são essenciais para qualquer forma de desenvolvimento distribuído e colaborativo. Quer se trate da história de uma página de wiki ou de um grande projeto de desenvolvimento de software, a capacidade de acompanhar cada mudança conforme foi feita e reverter as mudanças quando necessário pode fazer a diferença entre um processo bem gerenciado e controlado e um "primeiro vencedor" descontrolado , primeiro servido 'sistema. Também pode servir de mecanismo de due diligence para projetos de software.


Rastreamento de versão.


Os desenvolvedores podem querer comparar a versão de hoje de algum software com a versão de ontem ou a versão do ano passado. Uma vez que os sistemas de controle de versão acompanham todas as versões do software, isso se torna uma tarefa direta. Sabendo o que, quem e quando das mudanças ajudará a comparar o desempenho de versões específicas, trabalhando quando os erros foram introduzidos (ou corrigidos) e assim por diante. Qualquer problema que surgiu de uma mudança pode ser acompanhado por um exame de quem fez a mudança e os motivos que deram para fazer a mudança.


Equipes de coordenação.


O desenvolvimento de recursos geralmente é realizado por equipes, co-localizadas ou distribuídas. O controle de versão é central para coordenar equipes de contribuintes. Ele permite que um colaborador trabalhe em uma cópia dos recursos e, em seguida, libere suas alterações de volta ao núcleo comum quando estiver pronto. Outros contribuidores trabalham em suas próprias cópias dos mesmos recursos ao mesmo tempo, não são afetados pelas mudanças de cada um deles até que eles escolham fundir ou comprometer suas mudanças de volta ao projeto. Quaisquer conflitos que surjam - quando dois contribuidores alteram de forma independente a mesma parte de um recurso - são sinalizados automaticamente quando as alterações são mescladas. Esses conflitos podem então ser geridos pelos contribuintes.


Normalmente, em projetos de código aberto, os sistemas de controle de versão permitem que qualquer pessoa leia e copie os recursos do projeto, mas apenas os usuários autenticados, conhecidos como committers, podem atualizar o código-fonte no repositório.


Diligência devida.


Muitas atividades nos negócios são acompanhadas por uma responsabilidade de realizar verificações de "devida diligência". Precisamente o que esses controles implicam dependerá da atividade comercial em questão, mas no que diz respeito à propriedade intelectual, uma atividade importante de "diligência devida" é o rastreamento da propriedade de suas partes constituintes. Então, por exemplo, se alguém criar um software e deseja que sua organização o libere, sua organização quase certamente deseja verificar a proveniência de todo o código dentro do software. Esse processo é facilitado pela capacidade de rastrear quem fez o que muda para o código e quando eles foram feitos. Um sistema de controle de versão permite compilar uma lista de contribuidores e as datas de suas contribuições a serem verificadas. Essa lista pode ser facilmente verificada com uma lista de contratos IP.


O desenvolvimento aberto envolve contribuintes que fazem pequenas mudanças regulares nos recursos. Um sistema de controle de versão fornece um meio para monitorar essas alterações à medida que elas ocorrem. Os sistemas automatizados notificarão os responsáveis ​​pela gestão do IP nas saídas do projeto. Essas notificações, juntamente com os logs fornecidos para cada modificação individual, permitem aos gerentes de projetos monitorar e rastrear todas as contribuições.


O desenvolvimento aberto exige cuidados quanto à proveniência das contribuições. Os projetos de desenvolvimento aberto precisam seguir as melhores práticas nesta área. Se uma infração de IP for encontrada, o sistema de controle de versão pode ser usado para determinar a extensão da contaminação (quais arquivos foram afetados pela alteração problemática), quem realizou a alteração e quando a executou. Um sistema de controle de versão pode até ser usado para recuperar a última versão não contaminada do software.


Os sistemas de controle de versões também podem ser usados ​​para estabelecer precedência, quando há uma disputa em relação à propriedade de código ou idéias.


O controle de versão tem sido cuidadosamente estudado e compreendido na comunidade de engenharia de software há muito tempo. As soluções são estáveis, robustas e bem suportadas. Existem vários sistemas adequados para pequenas equipes locais e para grandes equipes distribuídas, tornando-os ideais para coordenar o desenvolvimento de software e para atenuar as diferenças de cultura e fuso horário.


O controle de versão é fornecido em sites como Github, SourceForge e Google Code. Esses sites geralmente criam um conjunto de serviços em torno do controle de versão: arquivamento, downloads de lançamento, listas de discussão, rastreadores de bugs, hospedagem na web e construção de fazendas. Esta gama de funcionalidades os torna particularmente atraentes para os projetos que não possuem os recursos para manter seu próprio servidor para controle de versão.


O CVS costumava ser o sistema de controle de versão de código aberto mais usado, mas esses dias o Subversion e o Git ultrapassaram, eles são comumente usados ​​em projetos de código aberto. As capacidades básicas desses sistemas são muito similares, mas oferecem diferentes funcionalidades de segurança, rede e abstração e diferentes licenças. Existem também muitas soluções proprietárias disponíveis de uma variedade de fornecedores.


Conforme discutido anteriormente, o controle de versão é uma ferramenta valiosa ao registrar e realizar análises para fins legais. Esses tópicos são discutidos no Desenvolvimento de Código Aberto - Uma Introdução à Propriedade e Problemas de Licenciamento.


Leitura adicional.


Informações relacionadas do OSS Watch:


Informações para.


Salvo indicação em contrário, esta página é © 2007-2018 University of Oxford.


O que é o controle de versão? Por que é importante para a devida diligência? por Stuart Yeates está licenciado sob uma Creative Commons Attribution-ShareAlike 4.0 International License.


A OSS Watch fornece conselhos e orientações imparciais sobre o uso, desenvolvimento e licenciamento de software livre, software de código aberto e hardware de código aberto.


Se você quiser saber mais sobre qualquer um desses tópicos, somos as pessoas a perguntar.


home & gt; recursos & gt; notas informativas & gt; O que é o controle de versão? Por que é importante para a devida diligência?


O que é o controle de versão? Por que é importante para a devida diligência?


por Stuart Yeates em 1 de janeiro de 2005, última atualização 9 de maio de 2018.


Introdução.


Um sistema de controle de versão (também conhecido como Revision Control System) é um repositório de arquivos, muitas vezes os arquivos para o código fonte de programas de computador, com acesso monitorado. Todas as mudanças feitas na fonte são rastreadas, juntamente com quem fez a mudança, por que elas fizeram, e referências a problemas corrigidos, ou aprimoramentos introduzidos pela mudança.


Os sistemas de controle de versões são essenciais para qualquer forma de desenvolvimento distribuído e colaborativo. Quer se trate da história de uma página de wiki ou de um grande projeto de desenvolvimento de software, a capacidade de acompanhar cada mudança conforme foi feita e reverter as mudanças quando necessário pode fazer a diferença entre um processo bem gerenciado e controlado e um "primeiro vencedor" descontrolado , primeiro servido 'sistema. Também pode servir de mecanismo de due diligence para projetos de software.


Rastreamento de versão.


Os desenvolvedores podem querer comparar a versão de hoje de algum software com a versão de ontem ou a versão do ano passado. Uma vez que os sistemas de controle de versão acompanham todas as versões do software, isso se torna uma tarefa direta. Sabendo o que, quem e quando das mudanças ajudará a comparar o desempenho de versões específicas, trabalhando quando os erros foram introduzidos (ou corrigidos) e assim por diante. Qualquer problema que surgiu de uma mudança pode ser acompanhado por um exame de quem fez a mudança e os motivos que deram para fazer a mudança.


Equipes de coordenação.


O desenvolvimento de recursos geralmente é realizado por equipes, co-localizadas ou distribuídas. O controle de versão é central para coordenar equipes de contribuintes. Ele permite que um colaborador trabalhe em uma cópia dos recursos e, em seguida, libere suas alterações de volta ao núcleo comum quando estiver pronto. Outros contribuidores trabalham em suas próprias cópias dos mesmos recursos ao mesmo tempo, não são afetados pelas mudanças de cada um deles até que eles escolham fundir ou comprometer suas mudanças de volta ao projeto. Quaisquer conflitos que surjam - quando dois contribuidores alteram de forma independente a mesma parte de um recurso - são sinalizados automaticamente quando as alterações são mescladas. Esses conflitos podem então ser geridos pelos contribuintes.


Normalmente, em projetos de código aberto, os sistemas de controle de versão permitem que qualquer pessoa leia e copie os recursos do projeto, mas apenas os usuários autenticados, conhecidos como committers, podem atualizar o código-fonte no repositório.


Diligência devida.


Muitas atividades nos negócios são acompanhadas por uma responsabilidade de realizar verificações de "devida diligência". Precisamente o que esses controles implicam dependerá da atividade comercial em questão, mas no que diz respeito à propriedade intelectual, uma atividade importante de "diligência devida" é o rastreamento da propriedade de suas partes constituintes. Então, por exemplo, se alguém criar um software e deseja que sua organização o libere, sua organização quase certamente deseja verificar a proveniência de todo o código dentro do software. Esse processo é facilitado pela capacidade de rastrear quem fez o que muda para o código e quando eles foram feitos. Um sistema de controle de versão permite compilar uma lista de contribuidores e as datas de suas contribuições a serem verificadas. Essa lista pode ser facilmente verificada com uma lista de contratos IP.


O desenvolvimento aberto envolve contribuintes que fazem pequenas mudanças regulares nos recursos. Um sistema de controle de versão fornece um meio para monitorar essas alterações à medida que elas ocorrem. Os sistemas automatizados notificarão os responsáveis ​​pela gestão do IP nas saídas do projeto. Essas notificações, juntamente com os logs fornecidos para cada modificação individual, permitem aos gerentes de projetos monitorar e rastrear todas as contribuições.


O desenvolvimento aberto exige cuidados quanto à proveniência das contribuições. Os projetos de desenvolvimento aberto precisam seguir as melhores práticas nesta área. Se uma infração de IP for encontrada, o sistema de controle de versão pode ser usado para determinar a extensão da contaminação (quais arquivos foram afetados pela alteração problemática), quem realizou a alteração e quando a executou. Um sistema de controle de versão pode até ser usado para recuperar a última versão não contaminada do software.


Os sistemas de controle de versões também podem ser usados ​​para estabelecer precedência, quando há uma disputa em relação à propriedade de código ou idéias.


O controle de versão tem sido cuidadosamente estudado e compreendido na comunidade de engenharia de software há muito tempo. As soluções são estáveis, robustas e bem suportadas. Existem vários sistemas adequados para pequenas equipes locais e para grandes equipes distribuídas, tornando-os ideais para coordenar o desenvolvimento de software e para atenuar as diferenças de cultura e fuso horário.


O controle de versão é fornecido em sites como Github, SourceForge e Google Code. Esses sites geralmente criam um conjunto de serviços em torno do controle de versão: arquivamento, downloads de lançamento, listas de discussão, rastreadores de bugs, hospedagem na web e construção de fazendas. Esta gama de funcionalidades os torna particularmente atraentes para os projetos que não possuem os recursos para manter seu próprio servidor para controle de versão.


O CVS costumava ser o sistema de controle de versão de código aberto mais usado, mas esses dias o Subversion e o Git ultrapassaram, eles são comumente usados ​​em projetos de código aberto. As capacidades básicas desses sistemas são muito similares, mas oferecem diferentes funcionalidades de segurança, rede e abstração e diferentes licenças. Existem também muitas soluções proprietárias disponíveis de uma variedade de fornecedores.


Conforme discutido anteriormente, o controle de versão é uma ferramenta valiosa ao registrar e realizar análises para fins legais. Esses tópicos são discutidos no Desenvolvimento de Código Aberto - Uma Introdução à Propriedade e Problemas de Licenciamento.


Leitura adicional.


Informações relacionadas do OSS Watch:


Informações para.


Salvo indicação em contrário, esta página é © 2007-2018 University of Oxford.


O que é o controle de versão? Por que é importante para a devida diligência? por Stuart Yeates está licenciado sob uma Creative Commons Attribution-ShareAlike 4.0 International License.


A OSS Watch fornece conselhos e orientações imparciais sobre o uso, desenvolvimento e licenciamento de software livre, software de código aberto e hardware de código aberto.


Se você quiser saber mais sobre qualquer um desses tópicos, somos as pessoas a perguntar.


home & gt; recursos & gt; notas informativas & gt; O que é o controle de versão? Por que é importante para a devida diligência?


O que é o controle de versão? Por que é importante para a devida diligência?


por Stuart Yeates em 1 de janeiro de 2005, última atualização 9 de maio de 2018.


Introdução.


Um sistema de controle de versão (também conhecido como Revision Control System) é um repositório de arquivos, muitas vezes os arquivos para o código fonte de programas de computador, com acesso monitorado. Todas as mudanças feitas na fonte são rastreadas, juntamente com quem fez a mudança, por que elas fizeram, e referências a problemas corrigidos, ou aprimoramentos introduzidos pela mudança.


Os sistemas de controle de versões são essenciais para qualquer forma de desenvolvimento distribuído e colaborativo. Quer se trate da história de uma página de wiki ou de um grande projeto de desenvolvimento de software, a capacidade de acompanhar cada mudança conforme foi feita e reverter as mudanças quando necessário pode fazer a diferença entre um processo bem gerenciado e controlado e um "primeiro vencedor" descontrolado , primeiro servido 'sistema. Também pode servir de mecanismo de due diligence para projetos de software.


Rastreamento de versão.


Os desenvolvedores podem querer comparar a versão de hoje de algum software com a versão de ontem ou a versão do ano passado. Uma vez que os sistemas de controle de versão acompanham todas as versões do software, isso se torna uma tarefa direta. Sabendo o que, quem e quando das mudanças ajudará a comparar o desempenho de versões específicas, trabalhando quando os erros foram introduzidos (ou corrigidos) e assim por diante. Qualquer problema que surgiu de uma mudança pode ser acompanhado por um exame de quem fez a mudança e os motivos que deram para fazer a mudança.


Equipes de coordenação.


O desenvolvimento de recursos geralmente é realizado por equipes, co-localizadas ou distribuídas. O controle de versão é central para coordenar equipes de contribuintes. Ele permite que um colaborador trabalhe em uma cópia dos recursos e, em seguida, libere suas alterações de volta ao núcleo comum quando estiver pronto. Outros contribuidores trabalham em suas próprias cópias dos mesmos recursos ao mesmo tempo, não são afetados pelas mudanças de cada um deles até que eles escolham fundir ou comprometer suas mudanças de volta ao projeto. Quaisquer conflitos que surjam - quando dois contribuidores alteram de forma independente a mesma parte de um recurso - são sinalizados automaticamente quando as alterações são mescladas. Esses conflitos podem então ser geridos pelos contribuintes.


Normalmente, em projetos de código aberto, os sistemas de controle de versão permitem que qualquer pessoa leia e copie os recursos do projeto, mas apenas os usuários autenticados, conhecidos como committers, podem atualizar o código-fonte no repositório.


Diligência devida.


Muitas atividades nos negócios são acompanhadas por uma responsabilidade de realizar verificações de "devida diligência". Precisamente o que esses controles implicam dependerá da atividade comercial em questão, mas no que diz respeito à propriedade intelectual, uma atividade importante de "diligência devida" é o rastreamento da propriedade de suas partes constituintes. Então, por exemplo, se alguém criar um software e deseja que sua organização o libere, sua organização quase certamente deseja verificar a proveniência de todo o código dentro do software. Esse processo é facilitado pela capacidade de rastrear quem fez o que muda para o código e quando eles foram feitos. Um sistema de controle de versão permite compilar uma lista de contribuidores e as datas de suas contribuições a serem verificadas. Essa lista pode ser facilmente verificada com uma lista de contratos IP.


O desenvolvimento aberto envolve contribuintes que fazem pequenas mudanças regulares nos recursos. Um sistema de controle de versão fornece um meio para monitorar essas alterações à medida que elas ocorrem. Os sistemas automatizados notificarão os responsáveis ​​pela gestão do IP nas saídas do projeto. Essas notificações, juntamente com os logs fornecidos para cada modificação individual, permitem aos gerentes de projetos monitorar e rastrear todas as contribuições.


O desenvolvimento aberto exige cuidados quanto à proveniência das contribuições. Os projetos de desenvolvimento aberto precisam seguir as melhores práticas nesta área. Se uma infração de IP for encontrada, o sistema de controle de versão pode ser usado para determinar a extensão da contaminação (quais arquivos foram afetados pela alteração problemática), quem realizou a alteração e quando a executou. Um sistema de controle de versão pode até ser usado para recuperar a última versão não contaminada do software.


Os sistemas de controle de versões também podem ser usados ​​para estabelecer precedência, quando há uma disputa em relação à propriedade de código ou idéias.


O controle de versão tem sido cuidadosamente estudado e compreendido na comunidade de engenharia de software há muito tempo. As soluções são estáveis, robustas e bem suportadas. Existem vários sistemas adequados para pequenas equipes locais e para grandes equipes distribuídas, tornando-os ideais para coordenar o desenvolvimento de software e para atenuar as diferenças de cultura e fuso horário.


O controle de versão é fornecido em sites como Github, SourceForge e Google Code. Esses sites geralmente criam um conjunto de serviços em torno do controle de versão: arquivamento, downloads de lançamento, listas de discussão, rastreadores de bugs, hospedagem na web e construção de fazendas. Esta gama de funcionalidades os torna particularmente atraentes para os projetos que não possuem os recursos para manter seu próprio servidor para controle de versão.


O CVS costumava ser o sistema de controle de versão de código aberto mais usado, mas esses dias o Subversion e o Git ultrapassaram, eles são comumente usados ​​em projetos de código aberto. As capacidades básicas desses sistemas são muito similares, mas oferecem diferentes funcionalidades de segurança, rede e abstração e diferentes licenças. Existem também muitas soluções proprietárias disponíveis de uma variedade de fornecedores.


Conforme discutido anteriormente, o controle de versão é uma ferramenta valiosa ao registrar e realizar análises para fins legais. Esses tópicos são discutidos no Desenvolvimento de Código Aberto - Uma Introdução à Propriedade e Problemas de Licenciamento.


Leitura adicional.


Informações relacionadas do OSS Watch:


Informações para.


Salvo indicação em contrário, esta página é © 2007-2018 University of Oxford.


O que é o controle de versão? Por que é importante para a devida diligência? por Stuart Yeates está licenciado sob uma Creative Commons Attribution-ShareAlike 4.0 International License.


A OSS Watch fornece conselhos e orientações imparciais sobre o uso, desenvolvimento e licenciamento de software livre, software de código aberto e hardware de código aberto.


Se você quiser saber mais sobre qualquer um desses tópicos, somos as pessoas a perguntar.


home & gt; recursos & gt; notas informativas & gt; O que é o controle de versão? Por que é importante para a devida diligência?


O que é o controle de versão? Por que é importante para a devida diligência?


por Stuart Yeates em 1 de janeiro de 2005, última atualização 9 de maio de 2018.


Introdução.


Um sistema de controle de versão (também conhecido como Revision Control System) é um repositório de arquivos, muitas vezes os arquivos para o código fonte de programas de computador, com acesso monitorado. Todas as mudanças feitas na fonte são rastreadas, juntamente com quem fez a mudança, por que elas fizeram, e referências a problemas corrigidos, ou aprimoramentos introduzidos pela mudança.


Os sistemas de controle de versões são essenciais para qualquer forma de desenvolvimento distribuído e colaborativo. Quer se trate da história de uma página de wiki ou de um grande projeto de desenvolvimento de software, a capacidade de acompanhar cada mudança conforme foi feita e reverter as mudanças quando necessário pode fazer a diferença entre um processo bem gerenciado e controlado e um "primeiro vencedor" descontrolado , primeiro servido 'sistema. Também pode servir de mecanismo de due diligence para projetos de software.


Rastreamento de versão.


Os desenvolvedores podem querer comparar a versão de hoje de algum software com a versão de ontem ou a versão do ano passado. Uma vez que os sistemas de controle de versão acompanham todas as versões do software, isso se torna uma tarefa direta. Sabendo o que, quem e quando das mudanças ajudará a comparar o desempenho de versões específicas, trabalhando quando os erros foram introduzidos (ou corrigidos) e assim por diante. Qualquer problema que surgiu de uma mudança pode ser acompanhado por um exame de quem fez a mudança e os motivos que deram para fazer a mudança.


Equipes de coordenação.


O desenvolvimento de recursos geralmente é realizado por equipes, co-localizadas ou distribuídas. O controle de versão é central para coordenar equipes de contribuintes. Ele permite que um colaborador trabalhe em uma cópia dos recursos e, em seguida, libere suas alterações de volta ao núcleo comum quando estiver pronto. Outros contribuidores trabalham em suas próprias cópias dos mesmos recursos ao mesmo tempo, não são afetados pelas mudanças de cada um deles até que eles escolham fundir ou comprometer suas mudanças de volta ao projeto. Quaisquer conflitos que surjam - quando dois contribuidores alteram de forma independente a mesma parte de um recurso - são sinalizados automaticamente quando as alterações são mescladas. Esses conflitos podem então ser geridos pelos contribuintes.


Normalmente, em projetos de código aberto, os sistemas de controle de versão permitem que qualquer pessoa leia e copie os recursos do projeto, mas apenas os usuários autenticados, conhecidos como committers, podem atualizar o código-fonte no repositório.


Diligência devida.


Muitas atividades nos negócios são acompanhadas por uma responsabilidade de realizar verificações de "devida diligência". Precisamente o que esses controles implicam dependerá da atividade comercial em questão, mas no que diz respeito à propriedade intelectual, uma atividade importante de "diligência devida" é o rastreamento da propriedade de suas partes constituintes. Então, por exemplo, se alguém criar um software e deseja que sua organização o libere, sua organização quase certamente deseja verificar a proveniência de todo o código dentro do software. Esse processo é facilitado pela capacidade de rastrear quem fez o que muda para o código e quando eles foram feitos. Um sistema de controle de versão permite compilar uma lista de contribuidores e as datas de suas contribuições a serem verificadas. Essa lista pode ser facilmente verificada com uma lista de contratos IP.


O desenvolvimento aberto envolve contribuintes que fazem pequenas mudanças regulares nos recursos. Um sistema de controle de versão fornece um meio para monitorar essas alterações à medida que elas ocorrem. Os sistemas automatizados notificarão os responsáveis ​​pela gestão do IP nas saídas do projeto. Essas notificações, juntamente com os logs fornecidos para cada modificação individual, permitem aos gerentes de projetos monitorar e rastrear todas as contribuições.


O desenvolvimento aberto exige cuidados quanto à proveniência das contribuições. Os projetos de desenvolvimento aberto precisam seguir as melhores práticas nesta área. Se uma infração de IP for encontrada, o sistema de controle de versão pode ser usado para determinar a extensão da contaminação (quais arquivos foram afetados pela alteração problemática), quem realizou a alteração e quando a executou. Um sistema de controle de versão pode até ser usado para recuperar a última versão não contaminada do software.


Os sistemas de controle de versões também podem ser usados ​​para estabelecer precedência, quando há uma disputa em relação à propriedade de código ou idéias.


O controle de versão tem sido cuidadosamente estudado e compreendido na comunidade de engenharia de software há muito tempo. As soluções são estáveis, robustas e bem suportadas. Existem vários sistemas adequados para pequenas equipes locais e para grandes equipes distribuídas, tornando-os ideais para coordenar o desenvolvimento de software e para atenuar as diferenças de cultura e fuso horário.


O controle de versão é fornecido em sites como Github, SourceForge e Google Code. Esses sites geralmente criam um conjunto de serviços em torno do controle de versão: arquivamento, downloads de lançamento, listas de discussão, rastreadores de bugs, hospedagem na web e construção de fazendas. Esta gama de funcionalidades os torna particularmente atraentes para os projetos que não possuem os recursos para manter seu próprio servidor para controle de versão.


O CVS costumava ser o sistema de controle de versão de código aberto mais usado, mas esses dias o Subversion e o Git ultrapassaram, eles são comumente usados ​​em projetos de código aberto. As capacidades básicas desses sistemas são muito similares, mas oferecem diferentes funcionalidades de segurança, rede e abstração e diferentes licenças. Existem também muitas soluções proprietárias disponíveis de uma variedade de fornecedores.


Conforme discutido anteriormente, o controle de versão é uma ferramenta valiosa ao registrar e realizar análises para fins legais. Esses tópicos são discutidos no Desenvolvimento de Código Aberto - Uma Introdução à Propriedade e Problemas de Licenciamento.


Leitura adicional.


Informações relacionadas do OSS Watch:


Informações para.


Salvo indicação em contrário, esta página é © 2007-2018 University of Oxford.


O que é o controle de versão? Por que é importante para a devida diligência? por Stuart Yeates está licenciado sob uma Creative Commons Attribution-ShareAlike 4.0 International License.


Um Guia Visual para Controle de Versão.


Controle de versão (também conhecido como Controle de revisão, como controle de origem), permite que você rastreie seus arquivos ao longo do tempo. Por quê você se importa? Então, quando você bagunça, você pode voltar facilmente a uma versão anterior do trabalho.


Você provavelmente preparou seu próprio sistema de controle de versão sem perceber que tinha um nome tão geeky. Tem algum arquivo como este? (Não são esses exatos que eu espero).


KalidAzadResumeOct2018.doc KalidAzadResumeMar2018.doc instacalc-logo3.png instacalc-logo4.png logo-old. png.


É por isso que usamos "Salvar como". Você quer o novo arquivo sem destruir o antigo. É um problema comum, e as soluções geralmente são assim:


Faça uma única cópia de backup (Document. old. txt). Se somos inteligentes, adicionamos um número ou data de versão: Document_V1.txt, DocumentMarch2018.txt Podemos até usar uma pasta compartilhada para que outras pessoas possam ver e editar arquivos sem enviá-los por e-mail. Espero que eles relabel o arquivo depois que eles salvá-lo.


Então, Por que precisamos de um sistema de controle de versão (VCS)?


Nosso sistema compartilhado de nomeação / nomeação é bom para projetos de classe ou papéis únicos. Mas projetos de software? Não é uma chance.


Você acha que o código-fonte do Windows se senta em uma pasta compartilhada como "Windows2007-Latest-UPDATED !!", para qualquer pessoa editar? Que cada programador apenas trabalha em uma subpasta diferente? De jeito nenhum.


Projetos grandes e em rápida mudança com muitos autores precisam de um Sistema de Controle de Versão (geekspeak para "banco de dados de arquivos") para rastrear mudanças e evitar o caos geral. Um bom VCS faz o seguinte:


Backup e restauração. Os arquivos são salvos conforme eles são editados, e você pode saltar para qualquer momento. Precisa desse arquivo como era em 23 de fevereiro de 2007? Sem problemas. Sincronização. Permite que as pessoas compartilhem arquivos e mantenha-se atualizado com a versão mais recente. Desfazer a curto prazo. Monkeying com um arquivo e desordenado? (Isso é como você, não é?). Jogue suas alterações e volte para a "última versão conhecida" no banco de dados. Desfazer a longo prazo. Às vezes, bagunçamos mal. Suponha que você fez uma mudança há um ano, e que teve um bug. Volte para a versão antiga e veja o que foi feito nesse dia. Alterações de percurso . À medida que os arquivos são atualizados, você pode deixar mensagens explicando por que a mudança aconteceu (armazenada no VCS, não no arquivo). Isso torna mais fácil ver como um arquivo está evoluindo ao longo do tempo e por quê. Propriedade da trilha. Um VCS marca todas as alterações com o nome da pessoa que o fez. Útil para blamestorming dando crédito. Sandboxing, ou seguro contra você. Fazendo uma grande mudança? Você pode fazer mudanças temporárias em uma área isolada, testar e elaborar as torções antes de "entrar" nas suas mudanças. Ramificação e fusão. Uma caixa de areia maior. Você pode ramificar uma cópia do seu código em uma área separada e modificá-la isoladamente (alterações de rastreamento separadamente). Mais tarde, você pode combinar seu trabalho de volta na área comum.


As pastas compartilhadas são rápidas e simples, mas não conseguem vencer esses recursos.


Aprenda o Lingo.


A maioria dos sistemas de controle de versão envolve os seguintes conceitos, embora os rótulos possam ser diferentes.


Repositório (repo): o banco de dados armazenando os arquivos. Servidor: o computador que armazena o repo. Cliente: o computador que se conecta ao repo. Working Set / Working Copy: seu diretório local de arquivos, onde você faz alterações. Trunk / Main: a localização principal para o código no repo. Pense no código como uma árvore genealógica - o tronco é a linha principal.


Adicionar: coloque um arquivo no repo pela primeira vez, ou seja, comece a rastreá-lo com Controle de versão. Revisão: qual versão um arquivo está ativado (v1, v2, v3, etc.). Cabeça: A última revisão no repo. Confira: Baixe um arquivo do repo. Check in: Faça o upload de um arquivo para o repositório (se ele foi alterado). O arquivo obtém um novo número de revisão, e as pessoas podem "verificar" o último. Mensagem de verificação: uma breve mensagem descrevendo o que foi alterado. Changelog / History: Uma lista de alterações feitas em um arquivo desde que foi criada. Atualização / Sincronização: Sincronize seus arquivos com o mais recente do repositório. Isso permite que você pegue as revisões mais recentes de todos os arquivos. Reverter: Arraste as mudanças locais e recarregue a última versão do repositório.


Ramificação: Crie uma cópia separada de um arquivo / pasta para uso privado (correção de bugs, testes, etc.). Branch é um verbo ("ramificar o código") e um substantivo ("Em qual ramo ele está?"). Diff / Change / Delta: Encontrando as diferenças entre dois arquivos. Útil para ver o que mudou entre as revisões. Merge (ou patch): aplique as alterações de um arquivo para outro, para que ele seja atualizado. Por exemplo, você pode mesclar recursos de um ramo para outro. (Na Microsoft, isso foi chamado Integração reversa e integração direta) Conflito: quando as alterações pendentes em um arquivo se contradizem (as duas mudanças não podem ser aplicadas). Resolver: corrigindo as alterações que se contradizem e verificando a versão correta. Bloqueio: assumindo o controle de um arquivo para que ninguém mais possa editá-lo até você desbloqueá-lo. Alguns sistemas de controle de versão usam isso para evitar conflitos. Quebrando o bloqueio: desbloqueando forçosamente um arquivo para que você possa editá-lo. Pode ser necessário se alguém bloquear um arquivo e sair de férias (ou "ligar no doente" no dia em que o Halo 3 sai). Confira para editar: Verificando uma versão "editável" de um arquivo. Alguns VCSes têm arquivos editáveis ​​por padrão, outros exigem um comando explícito.


E um cenário típico é assim:


Alice adiciona um arquivo (list. txt) ao repositório. Ela verifica isso, faz uma mudança (coloca "leite" na lista) e verifica-a novamente com uma mensagem de check-in ("Item obrigado adicionado"). Na manhã seguinte, Bob atualiza seu conjunto de trabalho local e vê a última revisão de list. txt, que contém "leite". He can browse the changelog or diff to see that Alice put “milk” the day before.


Visual Examples.


This guide is purposefully high-level: most tutorials throw a bunch of text commands at you. Let’s cover the high-level concepts without getting stuck in the syntax (the Subversion manual is always there, don’t worry). Sometimes it’s nice to see what’s possible .


The simplest scenario is checking in a file ( list. txt ) and modifying it over time.


Each time we check in a new version, we get a new revision (r1, r2, r3, etc.). In Subversion you’d do:


The - m flag is the message to use for this checkin.


Checkouts and Editing.


In reality, you might not keep checking in a file. You may have to check out, edit and check in . The cycle looks like this:


If you don’t like your changes and want to start over, you can revert to the previous version and start again (or stop). When checking out, you get the latest revision by default. If you want, you can specify a particular revision. In Subversion, run:


The trunk has a history of changes as a file evolves. Diffs are the changes you made while editing: imagine you can “peel” them off and apply them to a file:


For example, to go from r1 to r2, we add eggs (+Eggs). Imagine peeling off that red sticker and placing it on r1, to get r2.


And to get from r2 to r3, we add Juice (+Juice). To get from r3 to r4, we remove Juice and add Soup (-Juice, +Soup).


Most version control systems store diffs rather than full copies of the file . This saves disk space: 4 revisions of a file doesn’t mean we have 4 copies; we have 1 copy and 4 small diffs. Pretty nifty, eh? In SVN, we diff two revisions of a file like this:


Diffs help us notice changes (“How did you fix that bug again?”) and even apply them from one branch to another.


Bonus question: what’s the diff from r1 to r4?


Notice how “Juice” wasn’t even involved — the direct jump from r1 to r4 doesn’t need that change, since Juice was overridden by Soup.


Branches let us copy code into a separate folder so we can monkey with it separately:


For example, we can create a branch for new, experimental ideas for our list: crazy things like Rice or Eggo waffles. Depending on the version control system, creating a branch (copy) may change the revision number.


Now that we have a branch, we can change our code and work out the kinks. ( “Hrm… waffles? I don’t know what the boss will think. Rice is a safe bet.” ). Since we’re in a separate branch, we can make changes and test in isolation, knowing our changes won’t hurt anyone. And our branch history is under version control.


In Subversion, you create a branch simply by copying a directory to another.


So branching isn’t too tough of a concept: Pretend you copied your code into a different directory. You’ve probably branched your code in school projects, making sure you have a “fail safe” version you can return to if things blow up.


Branching sounds simple, right? Well, it’s not — figuring out how to merge changes from one branch to another can be tricky.


Let’s say we want to get the “Rice” feature from our experimental branch into the mainline. How would we do this? Diff r6 and r7 and apply that to the main line?


Wrongo. We only want to apply the changes that happened in the branch! . That means we diff r5 and r6, and apply that to the main trunk:


If we diffed r6 and r7, we would lose the “Bread” feature that was in main. This is a subtle point — imagine “peeling off” the changes from the experimental branch (+Rice) and adding that to main. Main may have had other changes, which is ok — we just want to insert the Rice feature.


In Subversion, merging is very close to diffing. Inside the main trunk, run the command:


This command diffs r5-r6 in the experimental branch and applies it to the current location. Unfortunately, Subversion doesn’t have an easy way to keep track of what merges have been applied, so if you’re not careful you may apply the same changes twice. It’s a planned feature, but the current advice is to keep a changelog message reminding you that you’ve already merged r5-r6 into main.


Many times, the VCS can automatically merge changes to different parts of a file. Conflicts can arise when changes appear that don’t gel: Joe wants to remove eggs and replace it with cheese (-eggs, +cheese), and Sue wants to replace eggs with a hot dog (-eggs, +hot dog).


At this point it’s a race: if Joe checks in first, that’s the change that goes through (and Sue can’t make her change).


When changes overlap and contradict like this, the VCS may report a conflict and not let you check in — it’s up to you to check in a newer version that resolves this dilemma. A few approaches:


Re-apply your changes . Sync to the the latest version (r4) and re-apply your changes to this file: Add hot dog to the list that already has cheese. Override their changes with yours . Check out the latest version (r4), copy over your version, and check your version in. In effect, this removes cheese and replaces it with hot dog.


Conflicts are infrequent but can be a pain. Usually I update to the latest and re-apply my changes.


Who would have thought a version control system would be Web 2.0 compliant? Many systems let you tag (label) any revision for easy reference. This way you can refer to “Release 1.0” instead of a particular build number:


In Subversion, tags are just branches that you agree not to edit; they are around for posterity, so you can see exactly what your version 1.0 release contained. Hence they end in a stub — there’s nowhere to go.


Real-life example: Managing Windows Source Code.


We guessed that Windows was managed out of a shared folder, but it’s not the case. So how’s it done?


There’s a main line with stable builds of Windows. Each group (Networking, User Interface, Media Player, etc.) has its own branch to develop new features. These are under development and less stable than main.


You develop new features in your branch and “Reverse Integrate (RI)” to get them into Main. Later, you “Forward Integrate” to bring the latest changes from Main into your branch:


Let’s say we’re at Media Player 10 and IE 6. The Media Player team makes version 11 in their own branch. When it’s ready and tested, there’s a patch from 10 – 11 which is applied to Main (just like the “Rice” example, but a tad more complicated). This is a reverse integration , from the branch to the trunk. The IE team can do the same thing.


Later, the Media Player team can pick up the latest code from other teams, like IE. In this case, Media Player forward integrates and gets the latest patches from main into their branch. This is like pulling in the “Bread” feature into the experimental branch, but again, more complicated.


So it’s RI and FI. Aye aye. This arrangement lets changes percolate throughout the branches, while keeping new code out of the main line. Cool, eh?


In reality, there’s many layers of branches and sub-branches, along with quality metrics that determine when you get to RI. But you get the idea: branches help manage complexity. Now you know the basics of how one of the largest software projects is organized.


Key Takeaways.


My goal was to share high-level thoughts about version control systems. Aqui estão os conceitos básicos:


Use version control. Seriously, it’s a good thing, even if you’re not writing an OS. It’s worth it for backups alone. Take it slow. I’m only now looking into branching and merging for my projects. Just get a handle on using version control and go from there. If you’re a small project, branching/merging may not be an issue. Large projects often have experienced maintainers who keep track of the branches and patches. Keep Learning. There’s plenty of guides for SVN, CVS, RCS, Git, Perforce or whatever system you’re using. The important thing is to know the concepts and realize every system has its own lingo and philosophy. Eric Sink has a detailed version control guide also.


These are the basics — as time goes on I’ll share specific lessons I’ve learned from my projects. Now that you’ve figured out a regular VCS, try an illustrated guide to distributed version control.


Other Posts In This Series.


Deixe uma resposta.


416 Comments on "A Visual Guide to Version Control"


I absolutely love a Friday but this article has made my day already! Thanks for putting this together…going to have a read of this later on today.


[…] Visual guide to version control A self explanatory visual guide to version control with SVN examples […]


Great article Khalid, and thanks for the link to Eric’s articles, they were pretty good too!


I will be testing the tagging and branching approach you both mention, it will mean I can check out a branch (i. e. previous release) into a new folder…make bug fixes and check it back into the branch and deploy to live server in a more controlled, and traceable way. Then would obviously need to merge bug fixes into my current trunk (development work since last version).


Here is quite a useful resource for SVN and source control in general by the way svnbook. red-bean/


Hi Carlton, thanks for dropping by! Yep, I’m working out my own branching/merging scheme to make it easy to edit/update the live version while still doing new development. Let me know if you have any insights :)


Hi Mark, thanks for the comment and link — I hadn’t seen that SCM before.


Wow.. you are a breath mint!


A Life-saver to be exact.. I’ve been looking for something like this for day..


That was very tasty. Obrigado.


Obrigado rapazes! Not sure what’s happening with the food theme (lifesavers, tasty articles) but I’m happy to oblige :)


(EDIT: Wow, I had been re-reading the article so many times that I forgot food items were the examples I used! They just became a series of words to me.)


Ótimo artigo. Just curious what tool you used for diagramming.


thanks for the outline. really helped me grasp the fundamentals. :)


I’m using svn that’s more than a year now and I love it. Thanks for that refreshing tuto, it makes its learning for the novice a real pleasure.


May I ask where did you do that neat graphics?


[…] A Visual Guide to Version Control | BetterExplained (tags: subversion svn programming versioncontrol guide tools scm reference howto tutorial webdev) […]


[…] If your developing a project as a group, version control is a necessity. Here is a website which does a better job that I would have at explaining version control: A Visual Guide to Version Control […]


[…] A Visual Guide to Version Control Version Control (aka Revision Control aka Source Control) lets you track your files over time. Why do you care? So when you mess up you can easily get back to a previous working version. (tags: development guide subversion versioncontrol) […]


[…] There is a great article on version control over at betterexplained. If you know little or nothing about it, this is a great primer to get you interested. Post a comment | Trackback URI […]


[…] A Visual Guide to Version Control | BetterExplained (tags: svn subversion programming versioncontrol guide tools toread **) […]


[…] Here is a fairly straight forward and simple intro to version control for even artist types. betterexplained/articles/a-visual-guide-to-version-control/ […]


[…] I was drawn to this site by A Visual Guide to Version Control, but there are also articles about Ruby on Rails, natural logarithms, and other topics related to numbers, programming, and business and communication—all areas that I’m interested in. […]


Hi all, thanks for the comments. Ack, you want to know the secret sauce? Microsoft Paint.


Just kidding :). I make the diagrams in PowerPoint 2007, by drawing various shapes, arranging and styling them appropriately. If you like, check out this article:


and the corresponding PowerPoint file:


yes, I’ve the same question (that caused a-ha moment ) what tool do you use to make such a nice web2.0ish graphics ?


[…] A Visual Guide to Version Control | BetterExplained (tags: reference tutorial programming) […]


@Kalyan: I used PowerPoint 2007 — there’s more details in comment #14, above.


@venki: Thanks for the comment, it was a lot of fun to write.


[…] Intro to VCS A Visual Guide to Version Control is an excellent introduction to the fundamentals of version control. Although the commands shown are specific to subversion, much of the material presented can be applied easily to other systems as well (including distributed ones). Pretty pictures too! [& # 8230;]


In This Series.


About The Site.


BetterExplained helps 450k monthly readers with friendly, insightful math lessons (more).

No comments:

Post a Comment