NGit rebase crea un nuevo compromiso

Tengo algunas funcionalidades trabajando en git que estoy tratando de portar a NGit. Mi script de git se ve así:

git add . git commit -a -m "Auto Commit" git fetch git rebase git push 

(Olvidé los detalles del event handlingl conflicto, aquí no son relevantes).

Al llevar esto a NGit, termino con lo siguiente:

 // Open a connection to the repository Git _git = Git.Open(MyRepoPath); // Add all new files to the commit. _git.Add().AddFilepattern(".").Call(); // execute the commit, but don't push yet. _git.Commit().SetMessage(CommitMsg).SetAll(true).Call(); // fetch all remote files _git.Fetch().Call(); // rebase _git.Rebase().SetUpstream("FETCH_HEAD").Call(); // push all changes _git.Push().Call(); 

Se ve más o less igual … La única diferencia que veo es que en mi server git, cada vez que se ejecuta el progtwig NGit, hay una nueva confirmación que se envía al repository. Esto no parece ser el caso cuando simplemente estoy ejecutando el script a través de msysgit en la misma máquina. (es decir, si no se cambian los files, no se genera nada en el server).

¿Hay algo que estoy haciendo mal aquí? ¿Alguna idea inteligente sobre cómo enviar solo si hay algo diferente desde el local al remoto después de la rebase?

¡Gracias!

Respondiendo a mi propia pregunta … espero que esto ayude a alguien a salir. Implementé una function "isDirty" (ya que NGit no parece implementar IsClean desde la biblioteca JGit) de la siguiente manera:

 private bool IsDirty(Status status) { return status.GetAdded().Count + status.GetChanged().Count + status.GetConflicting().Count + status.GetMissing().Count + status.GetModified().Count + status.GetRemoved().Count + status.GetUntracked().Count > 0; } 

Luego verifico esto antes de hacer el agregar / confirmar:

  // Check if anything needs a'doin' if(IsDirty(_git.Status().Call())) { // Add all new files to the commit. _git.Add().AddFilepattern(".").Call(); // execute the commit, but don't push yet. _git.Commit().SetMessage(CommitMsg).SetAll(true).Call(); } 

Y ahora funciona igual que el script anterior. ¡Guay!