Я пытаюсь написать базовую функцию С# GIT, которая фиксирует и отправляет локальный рабочий каталог в свой главный репозиторий. Это моя первая попытка использовать GIT, и я все еще пытаюсь понять некоторые основы.
Вот мой код. Это не очень сложно, все, что нужно сделать, это убедиться, что репозиторий обновляется с учетом любых изменений из моего рабочего каталога. Это работает, но с оговоркой, как описано ниже
public void Sync()
{
using (var repo = new Repository(@"C:\Temp\Git\test"))
{
repo.Stage("*");
repo.Commit("This is my comment");
Remote remote = repo.Network.Remotes["origin"];
var options = new PushOptions();
options.CredentialsProvider = new CredentialsHandler(
(url, usernameFromUrl, types) =>
new UsernamePasswordCredentials()
{
Username = "myusername",
Password = "mypassword"
});
var pushRefSpec = @"refs/heads/master";
repo.Network.Push(remote, pushRefSpec, options, null, "push done...");
}
}
Проблема, с которой я сталкиваюсь, заключается в следующем. Если я добавляю или изменяю какие-либо файлы, они соответствующим образом обновляются в репозитории. Однако, если нет файлов, которые необходимо зафиксировать, возникает следующее исключение:
No changes; nothing to commit
Что я хотел бы сделать, так это определить, нужно ли фиксировать файлы перед попыткой операции фиксации, поэтому иметь возможность корректно выйти, если ничего не нужно делать. I.E что-то вроде:
if (there are files to commit)
{
repo.Commit("This is my comment");
}
Кто-нибудь знает, как этого добиться?
Как уже упоминалось, это моя первая попытка с GIT, поэтому, если есть лучшие стандарты, чем мой код выше, я был бы очень признателен за любой совет.
Большое спасибо и лучшие пожелания