O que é uma explicação de uma frase de como Accurev funciona?

eu entendo git, Subversion, CVS e uma miríade de outros sistemas de controle de fonte.

Comecei a usar o Accurev e isso confunde-me.

Acho que preciso de formar um modelo mental que o relacione com outros SCM. idealmente em relação ao git porque entendo git o melhor.

eu explicaria git como "um grafo direcionado de commits onde um commit é um diff, um hash pai (ou pais), e um hash de si mesmo."Você pode facilmente seguir em frente para explicar conceitos como rebase e o que se funde realmente são, Fast-forward vs. actual merges e assim por diante. Eu achei fácil ensinar novos usuários conceitos complexos git em cerca de 15-20 minutos.

Eu realmente gostaria de entender Accurev a esse nível. Entao...

Qual é a abstração da frase de uma vez de como Accurev funciona que torna possível explicar como ele se comporta?

Alguns exemplos de perguntas que gostaria que o meu modelo mental respondesse:
    O que acontece quando eu "guardo" alguns ficheiros e depois" promovê-los"? E se eu não promover os mesmos ficheiros que guardei?
  • porque é que a história às vezes fica mal atribuída quando ocorrem actualizações não conflituosas (sobreposições)? Isto, em particular, é uma reminiscência de um modo fracassado de subversão que, a partir das explicações básicas que ouvi, eu não acredito que deva existir com Accurev.
  • Porque é que os diffs quase nunca contêm o que eu espero? Eu acredito que o que acontece é que diferenças contra a base é mostrando-me as diferenças contra o fluxo pai actual (em movimento), mas o que eu realmente quero é apenas ver as alterações que fiz desde a última actualização.
 28
Author: Otto, 2011-01-07

5 answers

Disclaimer: {[3] } o sistema de controle de fonte que eu entendo melhor é SVN. De modo que cores meu uso de termos como repo, checkout, etc. Além disso, eu uso Accurev em uma base diária, mas eu tendem a não se aventurar longe dos conceitos centrais que eu sinto que tenho uma compreensão firme.

Uma frase (com um asterisco): Accurev é um repositório ordenado no tempo que mantém um histórico de revisão de arquivos alterados para cada fluxo/espaço de trabalho, e permite-lhe desenvolver diferentes versões do código (em fluxos) enquanto cada fluxo é transparente atualizado com o código principal de seus fluxos pai e filho*.

(*) um fluxo é atualizado por um fluxo de crianças apenas quando um fluxo de crianças promove mudanças no fluxo pai.

O principal benefício da Accurev é a capacidade de manter as diferentes versões do Código facilmente. Se você quiser entendê-lo, eu não procuraria por abstrações rápidas ou termos redefinidos na linguagem que você está familiarizado. Eu procuraria exemplos e um explicação suave dos Termos à medida que surgem. Infelizmente, só sei o que preciso de saber, mas vou tentar... Vou para os locais de trabalho mais tarde. Não te preocupes com eles neste momento.)

Quando você cria uma transmissão entre parêntesis de outra, é como se tivesse feito uma ramificação SVN para criar a transmissão de crianças, mas a diferença (maravilhosa) é que o SVN mescla é tratado por si cada vez que actualiza a transmissão de pais ou filhos (ou é alertado quando existe um conflito e você precisa resolvê-lo manualmente).

Digamos que começas com um riacho, CompanyStream. Sua base de código é gerenciada por esse fluxo, e tem um histórico de mudanças que você fez em arquivos. Você então decide criar dois córregos de crianças abaixo disso, ChildStream1, ChildStream2. Quaisquer mudanças feitas em arquivos em CompanyStream vai escorrer para ambos os fluxos de crianças, então eles sempre têm o código mais recente que eles herdaram de CompanyStream. (Herança de mudanças de revisão é um conceito básico em Accurev.) Enquanto isso, você está fazendo desenvolvimento específico para um fornecedor em ChildStream1, e mudanças específicas para outro fornecedor em ChildStream2. Você pode decidir seletivamente qual o código do ChildStream1 e 2 ser promovido ao CompanyStream, mas quaisquer mudanças feitas no CompanyStream devem ser coisas que você quer aparecer em ambos os córregos de crianças. Se você promover o código do ChildStream1 em CompanyStream, então essas alterações aparecerão no ChildStream2 uma vez que ele faça uma atualização (porque novamente, ele herda CompanyStream)

A visualização do fluxo ficaria assim:

CompanyStream --
                            / -- ChildStream1
                            / -- ChildStream2

O Accurev Sobrepõe-se = um ficheiro num fluxo-mãe foi modificado desde que actualizou o seu fluxo. Visualize o fluxo pai como estando acima de você( é assim que ele será exibido no cliente), e esse fluxo progrediu horizontalmente de modo que Ele sobrepõe o ponto no tempo que você está em.

Mapeamento rápido da SVN para conceitos Accurev:
SVN Checkin-Promote
Checkout-Anchor SVN (ancorar algo faz com que seja um WIP - Work em progresso)
SVN Update-Update

Espaços De Trabalho Accurev

Ainda não mencionei espaços de trabalho. Um espaço de trabalho representa o código no seu disco rígido. Um espaço de trabalho é semelhante a um fluxo em que ele pode ter um histórico, e ele pode manter o controle das mudanças que você fez. (Isto é o que um Keep faz -- ele armazena um instantâneo dos arquivos que você especificar durante essa operação manter no histórico do seu espaço de trabalho. Você pode reverter para esses arquivos instantâneos a qualquer momento. Como resultado, um espaço de trabalho também pode ser visto como seu próprio fluxo pessoal, privado, que é um registro de alterações feitas ao código dentro.) Os fluxos são conceitos abstratos que representam mudanças de revisão, e uma história do que aconteceu. Os fluxos e espaços de trabalho herdam o código dos seus fluxos-mãe. Ao contrário dos fluxos, no entanto, os espaços de trabalho não pode ter riachos de crianças ou espaços de trabalho de crianças. Os espaços de trabalho são como folhas numa árvore; os córregos são como ramos.
    O que acontece quando eu "guardar" alguns ficheiros e depois "promovê-los"?
Promoves a um riacho. Mantém - te num espaço de trabalho. Mudanças promovidas são visíveis para todos os que podem ver o fluxo. As alterações mantidas são visíveis apenas para você, o proprietário do espaço de trabalho.

Os ficheiros mantidos terão imagens instantâneas no seu espaço de trabalho (no caso de alguma vez querer reverter para eles). Os arquivos promovidos terão instantâneos (por assim dizer) no fluxo para o qual você os promoveu. A grande diferença é que as mudanças promovidas irão escorrer para quaisquer riachos ou espaços de trabalho que herdem esse Riacho.

    E se eu não promover os mesmos ficheiros que guardei?
Então só estarão no teu espaço de trabalho. Além disso, eu acredito que quando você faz uma promoção, Accurev faz uma manutenção em primeiro lugar (então você tem um registro da mudança de arquivo em seu espaço de trabalho e no fluxo ).
  • porque é que a história às vezes fica mal atribuída quando ocorrem actualizações não conflituosas (sobreposições)? Isto, em particular, é uma reminiscência de um modo fracassado de subversão que, a partir das explicações básicas que ouvi, eu não acredito que deva existir com Accurev.
Pode dar um exemplo? A minha compreensão da versão dos ficheiros do Accurev está um pouco confusa. Acredito que o atributo da versão será atribuído pelo espaço de trabalho ou fluxo de que a mudança mais recente foi promovida (não mantida). É possível que existam algumas relações de herança de fluxo que fazem com que um arquivo tenha atributos que não parecem corretos até que você rastreá-lo.
    Porque é que os diffs quase nunca contêm o que eu espero? Eu acredito que o que acontece é que diff contra base está me mostrando o diff contra o fluxo pai atual (em movimento), mas o que eu realmente quero é apenas ver as mudanças que eu fiz desde que eu último actualizacao.

Então faça uma diferença contra "apoiado", Não contra base.

A configuração simples que funciona para mim é: eu sempre criar o meu próprio fluxo pessoal, privado fora de algum fluxo de desenvolvimento público. Em seguida, quando eu faço alterações que eu quero checkin (ou ser capaz de reverter para), eu promover para o meu próprio fluxo. Eu continuo trabalhando no meu espaço de trabalho, e se eu quiser diff meu espaço de trabalho contra o que eu fiz anteriormente ou o que está acontecendo acima de mim (mudanças que outras pessoas fizeram), eu faço um diff contra Backed.

Desculpa por isto ser tão longo. Espero que ajude...
 25
Author: compilererror, 2011-01-18 15:28:04
Uma vez que vários outros tentaram responder à tua pergunta directa - com a resposta do Dave a mais concisa e precisa-vou tentar as tuas balas.
  • O que acontece quando eu "guardar" alguns ficheiros e depois "promovê-los"?

    Uma manutenção de um ficheiro irá criar uma nova versão desse ficheiro, ainda privada à sua área de trabalho. Excelente para codificação Autónoma, criação de pontos de desvio, apenas Desenvolvimento privado simples. Você pode a qualquer momento no futuro reverter para qualquer versão mantida anterior de um arquivo, seja de você ou de qualquer outro contribuinte. Quando você está confortável com a versão que você tem atual (você compilou, construiu, testou, o que quer que), você pode promovê-la em seu fluxo Pai, assim expondo outros à sua versão sem o risco de quebrar coisas como você pode quando você commit no momento do check-in.

  • E se eu não promover os mesmos ficheiros que guardei?
    Mais uma vez, total autonomia no espaço de trabalho. Você pode trabalhar em 100 arquivos de uma vez se você é o tipo de desenvolvedor que pode manter o controle do que você está fazendo. Você não pode promover nenhum, Todos, Um, alguns - não importa - e você pode fazer isso na sua linha do tempo.
  • Porque é que a história às vezes fica mal atribuída quando ocorrem actualizações não conflituosas (sobreposições)? Isto, em particular, é uma reminiscência de um modo de subversão falhada que, a partir das explicações básicas que ouvi, Não acredito deve existir com Accurev.

    Não sei se sei a que se refere. Quando você executa uma atualização em um espaço de trabalho AccuRev, ela nunca irá sobrepor o seu trabalho-em-progresso. Se você está trabalhando em elementos que de outra forma seriam herdados-o que significa que o conteúdo em sua hierarquia pai mudou-eles serão listados como (sobreposição) em seu espaço de trabalho. Mais uma vez, você pode escolher quando realizar a junção, e ainda atualizar outras alterações de cima, e até mesmo continuar trabalhando no ficheiro em conflito. A junção acontece no espaço de trabalho, em vez de no tempo de promoção, dando-lhe a opção de mais uma vez compilar, construir, testar o resultado antes de entregar em outro lugar.
  • Porque é que os diffs quase nunca contêm o que eu espero? Eu acredito que o que acontece é que diff contra base está me mostrando o diff contra o fluxo pai atual (em movimento), mas o que eu realmente quero é apenas ver as mudanças que eu fiz desde a última atualização.

    A O 'Diff' contra base irá mostrar - lhe como a versão no seu espaço de trabalho se compara com a versão que herdou pela última vez de uma actualização ou criação de espaço de trabalho. Um 'Diff' contra 'Backed' mostrar-lhe-á como a sua versão se compara ao que está actualmente no fluxo-mãe. Então, se alguém promoveu alterações a esse arquivo enquanto você ainda tem o seu em progresso, Diff contra base só vai comparar com o seu original enquanto diferenças contra Backed compara com o novo conteúdo no Pai. A propósito, em a janela de histórico -> navegar nas versões poderá diffar quaisquer duas versões de um ficheiro umas contra as outras.

Espero que isto forneça um pouco de perspectiva sobre as suas perguntas específicas.

 5
Author: jtalbott, 2013-03-23 10:14:22

Eu explicaria git como "um grafo direcionado de commits onde um commit é um diff, um hash pai (ou pais), e um hash de si mesmo."

Um repositório git é, FWIW, uma floresta de árvores de história, das quais as folhas de commit são (commit metadata plus) árvores de diretórios e arquivos. nenhum diffs {[[7]}, não em Git, pelo menos quando se trata do conceito. Se o motor de armazenamento acontece para fazer deltification, que é outra história.

Quanto ao AccuRev, eu observei. o vídeo introdutório de 2 minutos (link destinado a referência, não anúncio), e parece-se muito com a árvore de história do SCM, com horários médios (ramos). Os itens com o ícone watery-wave são Cabeças de ramo, e a coisa amarela tipo pasta é uma cópia de trabalho. Quando o apresentador move as cópias de trabalho, ele parece estar fazendo um ajuste de todas as cópias de trabalho de seu subordinado(evil that! pensa nos conflitos de fusão!). O ícone com três pontos verdes (a edição list) seria uma lista de commit, então que é cherry-choose quando você copiá-lo.

Numa frase: nada que não saibas já através da experiência anterior ao cvs/svn/Git - segue em frente, diria eu.

 3
Author: user562374, 2011-01-07 00:18:16

Accurev is derived from ClearCase and takes after ClearCase UCM streams .
(O modelo Accurev tem algumas semelhanças com a UCM, e foi bem recebido pelos antigos utilizadores do ClearCase)

Um fluxo é uma configuração , que é a lista de legendas (para componentes apenas para leitura) ou ficheiros (para componentes com escrita) que você precisa de trabalhar (compilar, e/ou testar, e/ou depurar, ...).

É por isso que a Accurev é apresentada como um À Base de transmissão Arquitectura para o SCM.

Se tiver um fluxo privado por programador (o fluxo de espaço de trabalho) a partir do qual você pode promover para fluxos mais comuns. Cada promoção atualizar a configuração (que mais uma vez é apenas a lista do que você precisa trabalhar) do fluxo pai.

 3
Author: VonC, 2017-05-23 12:09:56

Vou dar-te a frase técnica (não-biz) única baseada no estilo do teu Q:

AccuRev tem uma abordagem orientada a objectos para modelar configurações de S / w. É tão simples quanto isso e é incrível! Especialmente se você está modelando um fluxo de trabalho ou melhor ainda, configurando a entrega contínua (outro tópico). Mas eu já vi isso, tantas pessoas descartam essa poderosa tecnologia e abordagem de modelo de dados porque eles não podem olhar além do tradicional' branches ' ala cvs, svn, p4, cc, ad infinito. A melhor analogia seria comparar uma série de fluxos AccuRev com regras em uma especificação de configuração em clearcase... (nota: é apenas uma analogia) mas muito mais poderoso como fluxos são entidades de primeira classe que mantêm a configuração baseada no tempo e história.

O truque para compreender AccuRev é que, enquanto qualquer dado" fluxo " - representa-uma configuração completa( ou seja, você pode verificá-lo), o conteúdo real desse fluxo é determinado dinamicamente agregando qualquer arquivo local / dir mudanças, quaisquer mudanças do pai, no topo da árvore para o topo, onde o resto dos arquivos são reunidos. Quando vires uma árvore de riachos, não haverá galhos... em vez disso, uma série de configurações baseadas em herança onde a corrente superior é como a "superclasse" e todos [Grand]filhos são [sub]subclasses. Novas mudanças de arquivo/dir são promovidas até a árvore à medida que vão do desenvolvimento, integração, QA, etc.

Dave
 1
Author: user129236, 2011-01-07 05:36:18