static UniGitLoader() { Profiler.BeginSample("UniGit Initialization"); try { injectionHelper = new InjectionHelper(); GitWindows.Init(); var recompileChecker = ScriptableObject.CreateInstance <AssemblyReloadScriptableChecker>(); recompileChecker.OnBeforeReloadAction = OnBeforeAssemblyReload; string repoPath = Application.dataPath.Replace(UniGitPath.UnityDeirectorySeparatorChar + "Assets", "").Replace(UniGitPath.UnityDeirectorySeparatorChar, Path.DirectorySeparatorChar); string settingsPath = UniGitPath.Combine(repoPath, ".git", "UniGit", "Settings.json"); injectionHelper.Bind <string>().FromInstance(repoPath).WithId("repoPath"); injectionHelper.Bind <string>().FromInstance(settingsPath).WithId("settingsPath"); injectionHelper.Bind <GitCallbacks>().FromMethod(() => { var c = new GitCallbacks(); EditorApplication.update += c.IssueEditorUpdate; c.RefreshAssetDatabase += AssetDatabase.Refresh; c.SaveAssetDatabase += AssetDatabase.SaveAssets; EditorApplication.projectWindowItemOnGUI += c.IssueProjectWindowItemOnGUI; //asset postprocessing GitAssetPostprocessors.OnWillSaveAssetsEvent += c.IssueOnWillSaveAssets; GitAssetPostprocessors.OnPostprocessImportedAssetsEvent += c.IssueOnPostprocessImportedAssets; GitAssetPostprocessors.OnPostprocessDeletedAssetsEvent += c.IssueOnPostprocessDeletedAssets; GitAssetPostprocessors.OnPostprocessMovedAssetsEvent += c.IssueOnPostprocessMovedAssets; return(c); }); injectionHelper.Bind <IGitPrefs>().To <UnityEditorGitPrefs>(); injectionHelper.Bind <GitManager>(); injectionHelper.Bind <GitSettingsJson>(); injectionHelper.Bind <GitSettingsManager>(); injectionHelper.Bind <GitAsyncManager>(); GitManager = injectionHelper.GetInstance <GitManager>(); GitManager.Callbacks.RepositoryCreate += OnRepositoryCreate; GitUnityMenu.Init(GitManager); GitResourceManager.Initilize(); GitOverlay.Initlize(); //credentials injectionHelper.Bind <ICredentialsAdapter>().To <WincredCredentialsAdapter>(); injectionHelper.Bind <GitCredentialsManager>(); //externals injectionHelper.Bind <IExternalAdapter>().To <GitExtensionsAdapter>(); injectionHelper.Bind <IExternalAdapter>().To <TortoiseGitAdapter>(); injectionHelper.Bind <GitExternalManager>(); injectionHelper.Bind <GitLfsManager>(); //hooks injectionHelper.Bind <GitPushHookBase>().To <GitLfsPrePushHook>(); injectionHelper.Bind <GitHookManager>(); //helpers injectionHelper.Bind <GitLfsHelper>(); injectionHelper.Bind <FileLinesReader>(); //project window overlays injectionHelper.Bind <GitProjectOverlay>(); if (!Repository.IsValid(repoPath)) { EditorApplication.delayCall += OnDelayedInit; } else { Rebuild(injectionHelper); EditorApplication.delayCall += OnDelayedInit; } } finally { Profiler.EndSample(); } }
static UniGitLoader() { HandlePaths(); GitProfilerProxy.BeginSample("UniGit Initialization"); try { GitWindows.OnWindowAddedEvent += OnWindowAdded; EditorApplication.update += OnEditorUpdate; injectionHelper = new InjectionHelper(); GitWindows.Init(); uniGitData = CreateUniGitData(); //data must be created manually to not call unity methods from constructors string projectPath = UniGitPathHelper.FixUnityPath( Application.dataPath.Replace(UniGitPathHelper.UnityDeirectorySeparatorChar + "Assets", "")); string repoPath = projectPath; if (EditorPrefs.HasKey(RepoPathKey)) { repoPath = UniGitPathHelper.FixUnityPath(UniGitPathHelper.Combine(repoPath, EditorPrefs.GetString(RepoPathKey))); } injectionHelper.Bind <UniGitPaths>().FromInstance(new UniGitPaths(repoPath, projectPath)); injectionHelper.Bind <GitInitializer>().NonLazy(); injectionHelper.Bind <UniGitData>().FromMethod(c => uniGitData); //must have a getter so that it can be injected injectionHelper.Bind <GitCallbacks>().FromMethod(GetGitCallbacks); injectionHelper.Bind <IGitPrefs>().To <UnityEditorGitPrefs>(); injectionHelper.Bind <GitManager>().NonLazy(); injectionHelper.Bind <GitSettingsJson>(); injectionHelper.Bind <GitSettingsManager>(); injectionHelper.Bind <GitAsyncManager>(); injectionHelper.Bind <GitFileWatcher>().NonLazy(); injectionHelper.Bind <GitReflectionHelper>(); injectionHelper.Bind <IGitResourceManager>().To <GitResourceManager>(); injectionHelper.Bind <GitOverlay>(); injectionHelper.Bind <GitAutoFetcher>().NonLazy(); injectionHelper.Bind <GitLog>(); injectionHelper.Bind <ILogger>().FromMethod(c => new Logger(c.injectionHelper.GetInstance <GitLog>())); injectionHelper.Bind <GitAnimation>(); injectionHelper.Bind <ICredentialsAdapter>().To <WincredCredentialsAdapter>(); injectionHelper.Bind <GitCredentialsManager>().NonLazy(); injectionHelper.Bind <IExternalAdapter>().To <GitExtensionsAdapter>(); injectionHelper.Bind <IExternalAdapter>().To <TortoiseGitAdapter>(); injectionHelper.Bind <GitExternalManager>(); injectionHelper.Bind <GitLfsManager>().NonLazy(); //must be non lazy as it add itself as a filter injectionHelper.Bind <GitPushHookBase>().To <GitLfsPrePushHook>(); injectionHelper.Bind <GitHookManager>().NonLazy(); injectionHelper.Bind <GitLfsHelper>(); injectionHelper.Bind <FileLinesReader>(); injectionHelper.Bind <GitProjectOverlay>().NonLazy(); injectionHelper.Bind <GitConflictsHandler>(); //diff window injectionHelper.Bind <GitDiffWindowToolbarRenderer>().AsTransient(); injectionHelper.Bind <GitDiffElementContextFactory>().AsTransient(); injectionHelper.Bind <GitDiffWindowCommitRenderer>().AsTransient(); injectionHelper.Bind <GitDiffWindowDiffElementRenderer>().AsTransient(); Rebuild(injectionHelper); } finally { GitProfilerProxy.EndSample(); } }