コード例 #1
0
        private static void SaveCommitMessageToFile(GitInitializer initializer, GitSettingsJson gitSettings, string message)
        {
            try
            {
                string settingsFolder = initializer.GitSettingsFolderPath;
                if (!Directory.Exists(settingsFolder))
                {
                    Directory.CreateDirectory(settingsFolder);
                }

                var commitMessageFilePath      = initializer.GetCommitMessageFilePath(gitSettings.ActiveSubModule);
                var commitMessageFileDirectory = Path.GetDirectoryName(commitMessageFilePath);

                if (!Directory.Exists(commitMessageFileDirectory))
                {
                    Directory.CreateDirectory(commitMessageFileDirectory);
                }

                File.WriteAllText(commitMessageFileDirectory, message);
            }
            catch (UnauthorizedAccessException e)
            {
                Debug.LogWarning("Commit message file is forced to read only.");
            }
            catch (Exception e)
            {
#if UNITY_EDITOR
                Debug.LogError("Could not save commit message to file. Saving to Prefs");
                Debug.LogException(e);
#endif
            }
        }
コード例 #2
0
 public GitDiffWindowCommitRenderer(GitSettingsJson gitSettings, GitManager gitManager, GitOverlay gitOverlay, GitInitializer initializer)
 {
     this.gitSettings = gitSettings;
     this.gitManager  = gitManager;
     this.gitOverlay  = gitOverlay;
     this.initializer = initializer;
 }
コード例 #3
0
        private void Construct(GitManager gitManager,
                               GitReflectionHelper reflectionHelper,
                               UniGitData data,
                               ILogger logger,
                               GitSettingsJson gitSettings,
                               GitCallbacks gitCallbacks,
                               GitInitializer initializer,
                               GitSettingsManager settingsManager,
                               UniGitPaths paths,
                               IGitResourceManager resourceManager)
        {
            this.resourceManager = resourceManager;
            this.paths           = paths;
            this.settingsManager = settingsManager;
            this.logger          = logger;
            this.gitSettings     = gitSettings;
            this.initializer     = initializer;

            if (gitManager == null)
            {
                logger.Log(LogType.Error, "Git manager cannot be null.");
                return;
            }
            if (this.gitCallbacks != null)
            {
                Unsubscribe(this.gitCallbacks);
            }

            this.data       = data;
            this.gitManager = gitManager;
            this.gitManager.AddWatcher(this);
            this.reflectionHelper = reflectionHelper;
            Subscribe(gitCallbacks);
        }
コード例 #4
0
        public GitLfsManager(GitManager gitManager, GitCallbacks gitCallbacks, ILogger logger, GitSettingsJson gitSettings)
        {
            this.gitManager                = gitManager;
            this.gitCallbacks              = gitCallbacks;
            this.logger                    = logger;
            this.gitSettings               = gitSettings;
            gitCallbacks.UpdateRepository += OnUpdateRepository;
            gitManager.AddSettingsAffector(this);

            try
            {
                version     = GitHelper.RunExeOutput(gitManager.GetCurrentRepoPath(), "git-lfs", "version", null);
                isInstalled = true;
            }
            catch (Exception)
            {
                isInstalled = false;
                return;
            }

            UpdateInitilized();
            if (Initilized)
            {
                RegisterFilter();
                Update();
            }
        }
コード例 #5
0
 public GitExternalManager(ICollection <IExternalAdapter> adapters, ILogger logger, GitSettingsJson gitSettings)
 {
     this.adapters    = adapters.OrderBy(GetAdapterPriority).ToArray();
     adapterNames     = adapters.Select(a => new GUIContent(GetAdapterName(a))).ToArray();
     this.logger      = logger;
     this.gitSettings = gitSettings;
 }
コード例 #6
0
        private static void Rebuild(InjectionHelper injectionHelper)
        {
            GitCallbacks = injectionHelper.GetInstance <GitCallbacks>();

            var settingsManager = injectionHelper.GetInstance <GitSettingsManager>();

            settingsManager.LoadGitSettings();

            //delayed called must be used for serialized properties to be loaded
            EditorApplication.delayCall += () =>
            {
                settingsManager.LoadOldSettingsFile();
            };

            GitManager = injectionHelper.GetInstance <GitManager>();

            injectionHelper.GetInstance <GitReflectionHelper>();
            GitSettings = injectionHelper.GetInstance <GitSettingsJson>();

            GitCallbacks.OnLogEntry             += OnLogEntry;
            GitCallbacks.OnBeforeAssemblyReload += OnBeforeAssemblyReload;

            injectionHelper.CreateNonLazy();

            injectionHelper.InjectStatic(typeof(GitProjectContextMenus));
            injectionHelper.InjectStatic(typeof(GitUnityMenu));
        }
コード例 #7
0
 public StatusTreeClass(GitSettingsJson gitSettings, GitManager gitManager, bool cullNonAssetPaths, UniGitPaths paths)
 {
     this.paths             = paths;
     this.gitManager        = gitManager;
     this.cullNonAssetPaths = cullNonAssetPaths;
     this.gitSettings       = gitSettings;
 }
コード例 #8
0
ファイル: GitManager.cs プロジェクト: wuzhangwuzhang/UniGit
        private static void LoadGitSettings()
        {
            string          settingsFilePath = SettingsFilePath;
            GitSettingsJson settingsJson     = null;

            if (File.Exists(settingsFilePath))
            {
                try
                {
                    settingsJson = JsonUtility.FromJson <GitSettingsJson>(File.ReadAllText(settingsFilePath));
                }
                catch (Exception e)
                {
                    Debug.LogError("Could not deserialize git settings. Creating new settings.");
                    Debug.LogException(e);
                }
            }

            if (settingsJson == null)
            {
                settingsJson = new GitSettingsJson();
                var oldSettingsFile = EditorGUIUtility.Load("UniGit/Git-Settings.asset") as GitSettings;
                if (oldSettingsFile != null)
                {
                    //must be delayed call for unity to deserialize settings file properly
                    EditorApplication.delayCall += LoadOldSettingsFile;
                }
                else
                {
                    SaveSettingsToFile(settingsJson);
                }
            }

            gitSettings = settingsJson;
        }
コード例 #9
0
        public GitSettingsManager(GitSettingsJson settings, string settingsPath, GitCallbacks gitCallbacks)
        {
            this.settings     = settings;
            this.settingsPath = settingsPath;
            this.gitCallbacks = gitCallbacks;

            gitCallbacks.EditorUpdate += OnEditorUpdate;
        }
コード例 #10
0
        public GitSettingsManager(UniGitPaths paths, GitSettingsJson settings, GitCallbacks gitCallbacks, ILogger logger, GitInitializer initializer)
        {
            this.paths        = paths;
            this.settings     = settings;
            this.gitCallbacks = gitCallbacks;
            this.logger       = logger;
            this.initializer  = initializer;

            gitCallbacks.EditorUpdate += OnEditorUpdate;
        }
コード例 #11
0
        public GitManager(string repoPath, GitCallbacks callbacks, GitSettingsJson settings, IGitPrefs prefs, GitAsyncManager asyncManager)
        {
            this.repoPath     = repoPath;
            this.callbacks    = callbacks;
            this.prefs        = prefs;
            this.asyncManager = asyncManager;
            gitSettings       = settings;
            gitPath           = UniGitPath.Combine(repoPath, ".git");

            Initialize();
        }
コード例 #12
0
 public GitDiffWindowToolbarRenderer(GitManager gitManager, GitDiffElementContextFactory contextFactory,
                                     UniGitData data, InjectionHelper injectionHelper, GitSettingsJson gitSettings, GitOverlay gitOverlay, IGitPrefs prefs)
 {
     this.gitManager      = gitManager;
     this.contextFactory  = contextFactory;
     this.data            = data;
     this.injectionHelper = injectionHelper;
     this.gitSettings     = gitSettings;
     this.gitOverlay      = gitOverlay;
     this.prefs           = prefs;
     searchField          = new SearchField();
 }
コード例 #13
0
        public GitCredentialsManager(GitManager gitManager, GitSettingsJson gitSettings, List <ICredentialsAdapter> adapters, GitCallbacks gitCallbacks)
        {
            this.gitSettings  = gitSettings;
            this.gitManager   = gitManager;
            this.adapters     = adapters.ToArray();
            this.gitCallbacks = gitCallbacks;
            adapterNames      = adapters.Select(a => new GUIContent(GetAdapterName(a))).ToArray();
            adapterIds        = adapters.Select(GetAdapterId).ToArray();

            gitCallbacks.EditorUpdate += EditorUpdate;

            LoadGitCredentials();
        }
コード例 #14
0
ファイル: GitLog.cs プロジェクト: Amitkapadi/UniGit
        public GitLog(UniGitPaths paths, UniGitData data, GitSettingsJson gitSettings, GitCallbacks gitCallbacks)
        {
            this.paths         = paths;
            this.data          = data;
            this.gitSettings   = gitSettings;
            this.gitCallbacks  = gitCallbacks;
            logTypeRegex       = new Regex(@"\[.*?\]", RegexOptions.Compiled);
            lineAndNumberRegex = new Regex(@"\(at((.*?):(.*?))\)", RegexOptions.Compiled);

            if (data.LogInitialized)
            {
                data.LogInitialized = true;
                data.LogEntries.Clear();
                LoadLines();
            }
        }
コード例 #15
0
 public GitAutoFetcher(GitManager gitManager,
                       GitCredentialsManager credentialsManager,
                       GitCallbacks gitCallbacks,
                       GitSettingsJson gitSettings,
                       ILogger logger,
                       GitInitializer initializer)
 {
     this.gitManager            = gitManager;
     this.credentialsManager    = credentialsManager;
     this.gitCallbacks          = gitCallbacks;
     this.logger                = logger;
     this.gitSettings           = gitSettings;
     this.initializer           = initializer;
     gitCallbacks.EditorUpdate += OnEditorUpdate;
     needsFetch = !EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isCompiling && !EditorApplication.isUpdating;
 }
コード例 #16
0
ファイル: GitManager.cs プロジェクト: wuzhangwuzhang/UniGit
        private static void SaveSettingsToFile(GitSettingsJson settings)
        {
            ValidateSettingsPath();
            string settingsFilePath = SettingsFilePath;

            try
            {
                string json = JsonUtility.ToJson(settings);
                File.WriteAllText(settingsFilePath, json);
            }
            catch (Exception e)
            {
                Debug.LogError("Could not serialize GitSettingsJson to json file at: " + settingsFilePath);
                Debug.LogException(e);
            }
        }
コード例 #17
0
        public GitProjectOverlay(GitManager gitManager, GitCallbacks gitCallbacks, GitSettingsJson gitSettings, GitAsyncManager asyncManager)
        {
            if (iconStyle == null)
            {
                iconStyle = new GUIStyle
                {
                    imagePosition = ImagePosition.ImageOnly,
                    alignment     = TextAnchor.LowerLeft,
                    padding       = new RectOffset(2, 2, 2, 2)
                };
            }

            this.gitManager   = gitManager;
            this.gitSettings  = gitSettings;
            this.asyncManager = asyncManager;
            this.gitCallbacks = gitCallbacks;
            gitCallbacks.ProjectWindowItemOnGUI += CustomIcons;
            gitCallbacks.UpdateRepository       += OnUpdateRepository;
        }
コード例 #18
0
ファイル: GitWizardBase.cs プロジェクト: Amitkapadi/UniGit
        private void Construct(GitManager gitManager,
                               GitCredentialsManager credentialsManager,
                               GitExternalManager externalManager,
                               ILogger logger,
                               GitSettingsJson gitSettings,
                               GitInitializer initializer)
        {
            this.logger             = logger;
            this.gitManager         = gitManager;
            this.credentialsManager = credentialsManager;
            this.externalManager    = externalManager;
            this.gitSettings        = gitSettings;
            this.initializer        = initializer;

            remotes = gitManager.Repository.Network != null && gitManager.Repository.Network.Remotes != null?gitManager.Repository.Network.Remotes.ToArray() : new Remote[0];

            remoteNames         = remotes.Select(r => new GUIContent(r.Name)).ToArray();
            branchNames         = gitManager.Repository.Branches.Select(b => b.CanonicalName).ToArray();
            branchFriendlyNames = gitManager.Repository.Branches.Select(b => b.FriendlyName).ToArray();
        }
コード例 #19
0
        public GitManager(
            GitCallbacks callbacks,
            GitSettingsJson settings,
            IGitPrefs prefs,
            GitAsyncManager asyncManager,
            UniGitData gitData,
            ILogger logger,
            GitInitializer initializer,
            UniGitPaths paths)
        {
            this.paths        = paths;
            this.gitData      = gitData;
            this.callbacks    = callbacks;
            this.prefs        = prefs;
            this.asyncManager = asyncManager;
            this.logger       = logger;
            this.initializer  = initializer;
            gitSettings       = settings;

            Initialize();
        }
コード例 #20
0
ファイル: GitFileWatcher.cs プロジェクト: Amitkapadi/UniGit
        public GitFileWatcher(GitManager gitManager,
                              GitCallbacks gitCallbacks,
                              GitSettingsJson gitSettings,
                              UniGitPaths paths,
                              [UniGitInjectOptional] bool trackAssetsPath)
        {
            this.paths        = paths;
            this.gitManager   = gitManager;
            this.gitSettings  = gitSettings;
            this.gitCallbacks = gitCallbacks;
            fileWatchers      = new List <FileSystemWatcher>();

            string regexPattern = @".*.git$";

            if (!trackAssetsPath)
            {
                regexPattern += "|.*Assets$";
            }
            ignoreFoldersRegex = new Regex(regexPattern);

            gitCallbacks.OnSettingsChange += OnSettingsChange;
            gitCallbacks.OnRepositoryLoad += OnRepositoryLoad;
        }
コード例 #21
0
        public GitProjectOverlay(GitManager gitManager,
                                 GitCallbacks gitCallbacks,
                                 GitSettingsJson gitSettings,
                                 GitAsyncManager asyncManager,
                                 GitReflectionHelper reflectionHelper,
                                 GitOverlay gitOverlay,
                                 IGitPrefs prefs,
                                 UniGitData data,
                                 ILogger logger,
                                 InjectionHelper injectionHelper,
                                 [UniGitInjectOptional] bool cullNonAssetPaths = true)
        {
            if (iconStyle == null)
            {
                iconStyle = new GUIStyle
                {
                    imagePosition = ImagePosition.ImageOnly,
                    alignment     = TextAnchor.LowerLeft,
                    padding       = new RectOffset(2, 2, 2, 2)
                };
                lineStyle = new GUIStyle(EditorGUIUtility.GetBuiltinSkin(EditorSkin.Inspector).FindStyle("IN Title"))
                {
                    padding       = new RectOffset(),
                    margin        = new RectOffset(),
                    contentOffset = Vector2.zero,
                    fixedHeight   = 0,
                    fixedWidth    = 0,
                    border        = { left = 0, right = 0 }
                };
            }

            this.logger            = logger;
            this.data              = data;
            this.gitManager        = gitManager;
            this.gitSettings       = gitSettings;
            this.asyncManager      = asyncManager;
            this.gitCallbacks      = gitCallbacks;
            this.reflectionHelper  = reflectionHelper;
            this.gitOverlay        = gitOverlay;
            this.prefs             = prefs;
            this.cullNonAssetPaths = cullNonAssetPaths;
            this.injectionHelper   = injectionHelper;

            gitManager.AddWatcher(this);

            gitCallbacks.EditorUpdate           += OnEditorUpdate;
            gitCallbacks.ProjectWindowItemOnGUI += CustomIcons;
            gitCallbacks.UpdateRepository       += OnUpdateRepository;

            //project browsers only get created before delay call but not before constructor
            gitCallbacks.DelayCall += () =>
            {
                projectWindows = new List <EditorWindow>(Resources.FindObjectsOfTypeAll(reflectionHelper.ProjectWindowType).Cast <EditorWindow>());
            };

            //shortcut to getting instance id without loading asset
            var method = typeof(AssetDatabase).GetMethod("GetMainAssetOrInProgressProxyInstanceID", BindingFlags.NonPublic | BindingFlags.Static);

            if (method != null)
            {
                GetMainAssetOrInProgressProxyInstanceID = (Func <string, int>)Delegate.CreateDelegate(typeof(Func <string, int>), method);
            }
        }
コード例 #22
0
 public StatusTreeClass(GitSettingsJson gitSettings)
 {
     this.gitSettings = gitSettings;
 }
コード例 #23
0
 public StatusTreeClass(GitSettingsJson gitSettings, IEnumerable <GitStatusEntry> status) : this(gitSettings)
 {
     Build(status);
 }
コード例 #24
0
 internal static void SetCommitMessage(GitInitializer initializer, GitManager gitManager, GitSettingsJson gitSettings, string commitMessage)
 {
     if (gitSettings.ReadFromFile)
     {
         SaveCommitMessageToFile(initializer, gitSettings, commitMessage);
     }
     gitManager.Prefs.SetString(CommitMessageKey, commitMessage);
 }
コード例 #25
0
 private void Construct(GitSettingsJson settings)
 {
     this.settings = settings;
     Refresh();
 }