Stash apply requires clean index
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
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- 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