public static bool Commit(VersionControlItemList items, bool test)
{
int filesToCommit = 0;
VersionControlItemList[] itemListsByRepo = items.SplitByRepository();
foreach (VersionControlItemList itemList in itemListsByRepo)
{
// Generate base folder path.
FilePath basePath = itemList.FindMostSpecificParent(FilePath.Null);
Repository repo = itemList.First().Repository;
ChangeSet cset = repo.CreateChangeSet(basePath);
cset.GlobalComment = VersionControlService.GetCommitComment(cset.BaseLocalPath);
foreach (var item in itemList)
{
if (!item.VersionInfo.CanCommit)
{
continue;
}
if (test)
{
return(true);
}
foreach (VersionInfo vi in repo.GetDirectoryVersionInfo(item.Path, false, true))
{
if (vi.HasLocalChanges)
{
filesToCommit++;
if (test)
{
continue;
}
cset.AddFile(vi);
}
}
}
if (!cset.IsEmpty)
{
Commit(repo, cset, false);
}
else if (!test)
{
MessageService.ShowMessage(GettextCatalog.GetString("There are no changes to be committed."));
continue;
}
}
return(filesToCommit != 0);
}