2015-10-09 5 views
2

Если у меня есть репо в этом состоянииRepository.Checkout() не изменяет подмодуль убрать из буфера

On branch master 
Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

     modified: App_Data/Submodule 
     modified: file.txt 

с App_Data/Submodule быть мерзавец подмодуль и file.txt это просто обычный файл.

Бег git checkout master --force поместит репо в этом состоянии

On branch master 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     modified: App_Data/Submodule (new commits) 

no changes added to commit (use "git add" and/or "git commit -a") 

но делать то же самое с LibGit2Sharp используя следующий код

using (var repo = new LibGit2Sharp.Repository(RepositoryPath)) 
{ 
    repo.Checkout("master", new CheckoutOptions { CheckoutModifiers = CheckoutModifiers.Force }); 
} 

оставляет репо в этом состоянии

On branch master 
Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

     modified: App_Data/Submodule 

Вызов сброса работает, как и ожидалось.

using (var repo = new LibGit2Sharp.Repository(RepositoryPath)) 
{ 
    repo.Reset(ResetMode.Hard, "master"); 
} 

Ожидается ли такое поведение от LibGit2Sharp? Должен ли я звонить сбрасывать себя, если я хочу отразить то же поведение git?

ответ

0

Ну, это было задано год назад, но я полагаю, что я предоставлю решение, которое я нашел. Возможно, реализация изменилась с тех пор, как в LibGit2Sharp.

Repository.Checkout с CheckoutModifiers.Force не работал для меня, чтобы отключить изменение моего подмодуля, но Repository.Unstage на относительном пути к подмодулю.

 Смежные вопросы

  • Нет связанных вопросов^_^