private IEnumerable <GUIContent> GetIcons(FileStatus status, SubmoduleStatus submoduleStatus, bool isSubModule) { foreach (var s in gitOverlay.GetDiffTypeIcons(status, true)) { yield return(s); } if (isSubModule) { yield return(gitOverlay.icons.submoduleIconSmall); if (submoduleStatus.HasFlag(SubmoduleStatus.WorkDirFilesModified)) { yield return(gitOverlay.icons.modifiedIconSmall); } if (submoduleStatus.HasFlag(SubmoduleStatus.WorkDirFilesUntracked)) { yield return(gitOverlay.icons.untrackedIconSmall); } if (submoduleStatus.HasFlag(SubmoduleStatus.WorkDirFilesIndexDirty)) { yield return(gitOverlay.icons.addedIconSmall); } if (submoduleStatus.HasFlag(SubmoduleStatus.WorkDirModified)) { yield return(GitGUI.GetTempContent(GitGUI.Textures.CollabPush)); } } }
static void Main(string[] args) { string repoRoot = Repository.Discover(Environment.CurrentDirectory) ?? throw new System.Exception("InitSubmodules must be run within a git repo."); using (Repository repo = new Repository(repoRoot)) { foreach (Submodule submodule in repo.Submodules) { SubmoduleStatus submoduleStatus = submodule.RetrieveStatus(); bool needsInit = submoduleStatus.HasFlag(SubmoduleStatus.WorkDirUninitialized); if (needsInit) { repo.Submodules.Update(submodule.Name, new SubmoduleUpdateOptions { Init = true }); } } } }