Alterar a visibilidade padrão de uma seção Magit

8

Eu tenho uma bifurcação de repositório popular, quero poder acompanhar os envios enviados por push a esse repositório, além de ter meus próprios comprometimentos pessoais no meu fork. Eu realmente não quero que minhas alterações sejam mescladas a montante, por isso estou bem com a mesclagem / nova versão toda vez que alguém se comprometer com o repo upstream.

Eu li sobre o fluxo de trabalho do triângulo e o suporte do Magit e achei ótimo. Ele faz exatamente o que eu preciso, exceto que insiste que meus commits locais devem ser finalmente mesclados no repositório principal, exibindo uma lista dos meus commits locais na seção Unmerged into upstream/master:

Head:     <local commit>
Merge:    upstream/master <upstream commit>
Push:     origin/master <local commit>

Unpulled from upstream/master (1)
987ac90 upstream/master <upstream commit>

Unmerged into upstream/master (1)
123baf8 master origin/master <local commit>

Isso é bom se houver alguns commits, mas mais tarde minhas modificações pessoais serão acumuladas e a lista aumentará. Existe alguma maneira de definir a seção Unmerged into upstream/masterpara estar sempre oculta?

Ammar Alammar
fonte

Respostas:

8

Embora não exista a opção existia quando esta pergunta foi feita, ele agora faz: magit-section-initial-visibility-alist.


Resposta antiga:

Não existe opção para fazer isso facilmente, principalmente porque esse recurso não foi solicitado com frequência. (Não me lembro de ter sido solicitado anteriormente, o que acho um pouco surpreendente.) Pretendo eventualmente adicionar essa opção, mas não até fazer outras alterações mais fundamentais no código da seção.

Mas existe um gancho que pode ser usado para fazer isso. Você terá que escrever um pouco de clichê:

(defun local-magit-initially-hide-unmerged (section)
  (and (not magit-insert-section--oldroot)
       (eq (magit-section-type section) 'unpushed)
       (equal (magit-section-value section) "@{upstream}..")
       'hide))

(add-hook 'magit-section-set-visibility-hook
          'local-magit-initially-hide-unmerged)
  • If magit-insert-section--oldrootis nil, o buffer está sendo criado primeiro (não sendo atualizado). Só queremos retornar nulo nesse caso.
  • Para obter o valor e o tipo de uma seção, use M-x magit-describe-section.
  • O valor de retorno tem que ser hide, showou nil(deixar outra coisa decidir).
  • Tais funções têm que vir antes magit-section-set-visibility-from-cache no gancho.

Isso é um pouco áspero nas bordas, mas novamente isso foi planejado apenas para fins internos.

tarso
fonte
Oh uau, muito obrigado! É exatamente disso que eu preciso.
Ammar Alammar