Detalhes das notas Git

eu li isto e {8] isto mas ainda os vejo como obscuros. De longe entendido:

    Criação (git notes add -m "a note")
  • as notas têm nomes

perguntas:

  1. as notas parecem não criar um commit, por isso como o push (exemplo ) é possível para eles? Qual é o mecanismo por baixo? o que é a adição de nota conceitualmente se não um commit?
  2. Onde posso ver as minhas notas sobre o Github UI?
  3. existe alguma relação entre o Github commit comments as pessoas podem fazer e notar funcionalidade?
  4. se os comentários do Github são notas Como posso ir buscá-las e vê-las no meu comp local via git log?
  5. se os comentários do Github não são notas, O que são e é possível ir buscá-las?
  6. As notas são fundidas? Como? Há alguma ressalva de resolver conflitos para notas editadas?
  7. existem outros problemas/dificuldades com notas?
Obrigado.
Author: Max, 2015-08-28

1 answers

Escrevi mais sobre eles aqui, como parte da minha dica da série da semana .

Http://alblue.bandlem.com/2011/11/git-tip-of-week-git-notes.html

As próprias notas são bolhas que são armazenadas num ficheiro ref separado ({[[[0]}) e são organizadas pelo commit para o qual estão a apontar (então git ls-tree refs/notes/commits) dá um objecto em árvore (pense: directório e conteúdo) onde cada nome de directório é a coisa para a qual estão a apontar e cada valor é uma bolha que contém o a mensagem das notas em si.

Você pode ver o uso do Gerrit de notas de revisão na árvore de revisão JGit (que usa refs/notes/review em vez de refs/notes/commit mas essencialmente exatamente o mesmo princípio) no GitHub indo para aqui:

Https://github.com/eclipse/jgit/tree/refs/notes/review

Uma vez que também é um ref, e o delta do conteúdo do arquivo são armazenados com com commits, você pode ver as notas individuais sendo alteradas, para exemplo:

Https://github.com/eclipse/jgit/commit/de70108c883afe563a48352c05cdd440c25f58cc

Observe que o nome do arquivo é mostrado como o caminho do objeto; no caso acima, de70... é a confirmação de que adicionado a mensagem, mas o conteúdo do commit é alterar um arquivo 3a/bf... que corresponde a este commit:

Https://github.com/eclipse/jgit/commit/3abf35bc0fc7a1c130e8fec42083ffd21c342129

E se perseguires o link de revisão lá para o Gerrit original fonte:

Https://git.eclipse.org/r/#/c/54632/

Vê que os dados de revisão correspondem aos do elemento notas.

Quanto ao facto de se fundirem de forma limpa - uma vez que cada nota corresponde a cada commit, e cada commit é imutável uma vez que muda, e a commit de nota está numa base por directório/ficheiro, você pode facilmente ter várias notas para commits diferentes que se sobrepõem sem medo de conflito de junção. No entanto, se dois programas / processos atualizam a mesma nota de commit, então você pode ter problemas de merge que precisam ser resolvidos da mesma forma que qualquer outro DVCS merge.

De um modo geral, os programas que precisam de armazenar informação ortogonal devem usar o seu próprio espaço de notas, como o Gerrit faz para refs/notes/review. Então, se você tem refs/notes/program1 e refs/notes/program2 você nunca vai ter uma colisão.

 9
Author: AlBlue, 2015-08-28 11:27:28