libgit2 / libgit2/libgit2

Stash apply requires clean index

Aberta
#5,501 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Linguagem predominante
C
Estrelas
10.6k
Forks
2.7k
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

Reproduction steps

try to apply a stash when index is dirty. This is specifically prevented by https://github.com/libgit2/libgit2/blob/66137ff6ea9e516e0fa840134393d5a81d5b86e9/src/stash.c#L900 which was added in #3259

However, git allows this:

3066 $ git init
Initialized empty Git repository in /home/wmertens/testgit/.git/
3067 $ touch bar
3071 $ git commit  -a -m 'hi'
[master (root-commit) b37d552] hi
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bar
3082 $ echo hi  > foo
3084 $ git add foo
3088 $ git stash
Saved working directory and index state WIP on master: b37d552 hi
3089 $ echo boom  > foo
3091 $ git add foo
3093 $ git stash apply
CONFLICT (add/add): Merge conflict in foo
Auto-merging foo
3094 $ git status
On branch master
Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        both added:      foo
3095 $ cat foo
<<<<<<< Updated upstream
boom
=======
hi
>>>>>>> Stashed changes

IMHO libgit should behave like git, and the clean check should not be done.

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece em src/stash.c, próximo à verificação de índice limpo na linha citada, e depois compare o comportamento com a reprodução do Git fornecida. Remova a restrição somente se o fluxo existente de stash-apply puder lidar com o índice sujo; considera-se concluído quando aplicar o stash permite o comportamento de conflito mostrado pelo Git.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
c, git
Domínio
devtools
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Claramente especificada
Facilidade para iniciantes
50/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.