Por que meu git sempre é forçado a empurrar?

5

Parece que minha instalação local de git (versão 2.10.2) é tal que sempre que eu emiti git push , isso é interpretado como git push -f . Existe uma variável de configuração que eu poderia ter configurado incorretamente para causar esse comportamento?

Mais plano de fundo

Recentemente, o servidor que eu usei atualizou a instalação do GitLab (rodando a edição 8.14.2 b9442a5eb0, infelizmente, não há nenhuma maneira fácil para eu descobrir qual era a versão anterior). Para cada projeto que possuo (e tenho permissão de mestre), recebo

[Tue Dec 06 02:21 PM] ArchDesktop $ git push 
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 765 bytes | 0 bytes/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To REDACTED
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'REDACTED'

Suponho que isso se deva à implementação de "filiais protegidas" em versões mais recentes do GitLab. Agora, eu deveria ser capaz de empurrar coisas, já que tenho acesso mestre aos meus próprios projetos. Além disso, se fossem apenas problemas de permissão, a mensagem de erro, eu entendo, deveria ser lida

remote: GitLab: You are not allowed to force push code to a protected branch

sem menções de força . Então, a questão é: por que o Git está tentando forçar meus commits quando eu não digo?

Ainda mais fundo

Era uma vez eu li sobre como o Git funciona e realmente entendi. Então eu comecei a usá-lo e esqueci. Portanto, é inteiramente possível que eu esteja fazendo algo completamente errado e não entendendo isso. Eu nem sei como diagnosticar esse problema. Portanto, quaisquer comentários sobre o que eu preciso incluir nesta pergunta ou quais coisas óbvias devo verificar são bem-vindos!

Informações adicionais

Conforme solicitado: git config --list fornece somente (além do meu nome, e-mail e a URL do repositório)

user.name=*******
user.email=******
push.default=simple
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=**************
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

Saída ligeiramente editada de GIT_TRACE=1 git push :

09:13:50.859273 git.c:349               trace: built-in: git 'push'
09:13:50.859524 run-command.c:336       trace: run_command: 'ssh' '[email protected]' 'git-receive-pack '\''REDACTED.git'\'''
09:13:54.097551 run-command.c:336       trace: run_command: 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
09:13:54.098218 exec_cmd.c:120          trace: exec: 'git' 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
09:13:54.100884 git.c:349               trace: built-in: git 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 389 bytes | 0 bytes/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To REDACTED
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'REDACTED'
    
por Willie Wong 06.12.2016 / 20:32

1 resposta

2

Entrei em contato com nosso amigável administrador local do GitLab e ele se tornou um bug conhecido :

With GIT version 2.11.0 installed in combination with Gitlab v. 8.11.x - 8.14.2 Master or Developer are not able to push to protected branches even if they have the correct permissions.

Ao ler os comentários, parece que a causa já foi encontrada (embora eu mesmo não consiga entender muito), e provavelmente será resolvida em uma versão futura.

Uma das coisas que o administrador apontou para mim (o que também explica porque eu mesmo não encontrei esse bug quando fiz a pesquisa), é que é a versão do git no servidor isso importa. Enquanto eu corro 2.10.2 localmente, é a atualização para 2.11.0 em seu servidor que causou o problema. Então, quando procurei conflitos específicos entre o 2.10.2 e o GitLab, não encontrei nenhum.

    
por 08.12.2016 / 15:29

Tags