Como usar as soluções VCS, como SVN ou git, para rotular a versão de arquivos específicos?

1

Estou começando a usar sistemas de controle de versão (VCS) para acompanhar minhas pilhas crescentes de código e estou experimentando com SVN e git. Os comandos básicos são muito parecidos, então vou usar o SVN como meu exemplo.

Digamos que eu tenha um repositório com alguns arquivos nele. Depois de alterar um arquivo, eu confirmo a alteração assim:

svn commit -m "altered the regex to parse properly"

Isso confirma minhas alterações e adiciona a mensagem de confirmação. No entanto, e se eu tivesse acabado de alterar 3 scripts diferentes, como posso adicionar mensagens de confirmação individualizadas para cada um dos arquivos?

Da mesma forma, sendo um sistema de controle de versão, quero realmente acompanhar os números da versão do script. Digamos que eu comece na versão 1.0.0, como posso rotular meu script alterado como sendo v1.0.1 ao confirmar?

Então, basicamente, se alguém pudesse me dizer como controlar as mensagens de log e as alterações de versão de cada arquivo ao ser confirmada, ficaria muito grato. Obrigado!

    
por jake9115 12.09.2013 / 22:03

2 respostas

5

Se você quiser manter um registro de alterações em execução por arquivo , então você precisa:

  • Crie um arquivo de texto simples ChangeLog em sua árvore de origem e digite nele qualquer informação que você precisar (data, hora, ID de confirmação, resumo, etc.) para cada arquivo

  • Somente efetue um arquivo por vez em cada confirmação, assim você poderá ver um histórico de confirmação no seu arquivo de controle de versão que lista as alterações individuais de cada arquivo. Isso pode levar a um estado inconsistente do seu código, o que significa que se você alterar dois arquivos que dependem um do outro e só tiver um arquivo alterado, haverá um erro, você terá quebrado commits no seu código.

Os VCSes normalmente não suportam nativamente um log de confirmação per-file enquanto as submissões contêm vários arquivos. Você poderia, no entanto, apenas colocar uma nova linha entre a descrição da alteração de cada arquivo em uma confirmação de vários arquivos. Algo parecido com isto:

Summary: Various bug fixes and updates for Flummox 1.5.2.

file1.c: Updated Flummox API for Flummox 1.5.2.
file2.c: Fix a string formatting buffer overflow.
file3.c: Use new Flummox Advanced Regex engine.

A maioria das pessoas confirma cada alteração logicamente isolada em um commit, independentemente de afetar 1 arquivo ou 1000.

    
por 12.09.2013 / 22:19
2

@allquixotic perdeu a segunda parte da sua pergunta sobre números de versão, então aqui está uma resposta para essa parte.

how can I label my changed script as being v1.0.1 upon commit

Você realmente não rotula seu script como sendo v.1.0.1, provavelmente configuraria uma tag para esse commit com o rótulo v.1.0.1.

No git, isso pode ser tão simples quanto algo como git tag v1.0.1 <commithash> . As tags no SVN são um pouco diferentes, já que você usa o recurso de cópia do svn Doc .

    
por 13.09.2013 / 02:03