示例#1
0
        private void ContextMenuClick(object userData, string[] options, int selected)
        {
            if ((bool)userData && selected == 0)
            {
                selected = 1;
            }
            switch (selected)
            {
            case 0:
                this.DoShowDiff(this.GetGUID());
                break;

            case 1:
                ASEditorBackend.DoAS();
                ASEditorBackend.ASWin.ShowHistory();
                break;

            case 2:
                if (!ASEditorBackend.SettingsIfNeeded())
                {
                    Debug.Log("Asset Server connection for current project is not set up");
                }
                if (EditorUtility.DisplayDialog("Discard changes", "Are you sure you want to discard local changes of selected asset?", "Discard", "Cancel"))
                {
                    AssetServer.DoUpdateWithoutConflictResolutionOnNextTick(new string[]
                    {
                        this.GetGUID()
                    });
                }
                break;
            }
        }
示例#2
0
 private static void Testing_Invoke(string klass, string method, params object[] prms)
 {
     try
     {
         foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
         {
             if ((assembly.GetName().Name != "UnityEditor") && (assembly.GetName().Name != "UnityEngine"))
             {
                 foreach (System.Type type in AssemblyHelper.GetTypesFromAssembly(assembly))
                 {
                     if (type.Name == klass)
                     {
                         type.InvokeMember(method, BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static, null, null, prms);
                     }
                 }
             }
         }
     }
     catch (Exception exception)
     {
         if ((exception.InnerException != null) && (exception.InnerException.GetType() == typeof(ExitGUIException)))
         {
             throw exception;
         }
         object[] objArray1 = new object[] { exception };
         Testing_Invoke(AssetServer.GetString("s_ExceptionHandlerClass"), AssetServer.GetString("s_ExceptionHandlerFunction"), objArray1);
     }
 }
示例#3
0
        private bool DoShowDiff(bool binary)
        {
            List <string>      list  = new List <string>();
            List <CompareInfo> list2 = new List <CompareInfo>();

            for (int i = 0; i < this.selectedLV1Items.Length; i++)
            {
                if (this.selectedLV1Items[i])
                {
                    int serverItemChangeset = AssetServer.GetServerItemChangeset(this.downloadConflicts[i], -1);
                    int ver = (!AssetServer.HasDeletionConflict(this.downloadConflicts[i])) ? -1 : -2;
                    list.Add(this.downloadConflicts[i]);
                    list2.Add(new CompareInfo(serverItemChangeset, ver, (!binary) ? 0 : 1, (!binary) ? 1 : 0));
                }
            }
            bool result;

            if (list.Count != 0)
            {
                AssetServer.CompareFiles(list.ToArray(), list2.ToArray());
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }
        public static bool InitializeMaintBinding()
        {
            PListConfig plistConfig = new PListConfig("Library/ServerPreferences.plist");
            string      str1        = plistConfig["Maint UserName"];
            string      server      = plistConfig["Maint Server"];
            string      str2        = plistConfig["Maint project name"];
            string      str3        = plistConfig["Maint database name"];
            string      str4        = plistConfig["Maint port number"];
            int         result;

            if (!int.TryParse(plistConfig["Maint Timeout"], out result))
            {
                result = 5;
            }
            if (server.Length == 0 || str2.Length == 0 || (str3.Length == 0 || str1.Length == 0))
            {
                AssetServer.SetProjectName(string.Empty);
                return(false);
            }
            AssetServer.SetProjectName(string.Format("{0} @ {1}", (object)str2, (object)server));
            string connectionString = "host='" + server + "' user='******' password='******' dbname='" + str3 + "' port='" + str4 + "' sslmode=disable " + plistConfig["Maint Connection Settings"];

            AssetServer.Initialize(str1, connectionString, result);
            return(true);
        }
示例#5
0
        private bool DoShowDiff(bool binary)
        {
            List <string>      list  = new List <string>();
            List <CompareInfo> list2 = new List <CompareInfo>();
            int changeset            = -1;
            int num2 = -1;

            if (AssetServer.IsItemDeleted(this.selectedGUID))
            {
                changeset = -2;
            }
            else
            {
                changeset = AssetServer.GetWorkingItemChangeset(this.selectedGUID);
                changeset = AssetServer.GetServerItemChangeset(this.selectedGUID, changeset);
            }
            int serverItemChangeset = AssetServer.GetServerItemChangeset(this.selectedGUID, -1);

            num2 = (serverItemChangeset != -1) ? serverItemChangeset : -2;
            list.Add(this.selectedGUID);
            list2.Add(new CompareInfo(changeset, num2, !binary ? 0 : 1, !binary ? 1 : 0));
            if (list.Count != 0)
            {
                AssetServer.CompareFiles(list.ToArray(), list2.ToArray());
            }
            else
            {
                return(false);
            }
            return(true);
        }
        private void DoShowProjects()
        {
            int    result        = 0x29ed;
            string serverAddress = this.serverAddress;

            if (serverAddress.IndexOf(":") > 0)
            {
                int.TryParse(serverAddress.Substring(serverAddress.IndexOf(":") + 1), out result);
                serverAddress = serverAddress.Substring(0, serverAddress.IndexOf(":"));
            }
            AssetServer.AdminSetCredentials(serverAddress, result, this.userName, this.password);
            MaintDatabaseRecord[] recordArray = AssetServer.AdminRefreshDatabases();
            if (recordArray != null)
            {
                this.projectsList = new string[recordArray.Length];
                for (int i = 0; i < recordArray.Length; i++)
                {
                    this.projectsList[i] = recordArray[i].name;
                }
                this.projectsLv.totalRows = recordArray.Length;
                this.GetDefaultPListConfig();
                this.plc["Maint Server"]      = serverAddress;
                this.plc["Maint UserName"]    = this.userName;
                this.plc["Maint port number"] = this.port;
                this.plc.Save();
                ASEditorBackend.SetPassword(serverAddress, this.userName, this.password);
                ASEditorBackend.AddUser(this.serverAddress, this.userName);
            }
            else
            {
                this.projectsLv.totalRows = 0;
            }
        }
 public bool DoGUI()
 {
     if (constants == null)
     {
         constants = new ASMainWindow.Constants();
     }
     if (this.resetKeyboardControl)
     {
         this.resetKeyboardControl  = false;
         GUIUtility.keyboardControl = 0;
     }
     GUILayout.BeginHorizontal(new GUILayoutOption[0]);
     GUILayout.BeginVertical(constants.groupBox, new GUILayoutOption[0]);
     GUILayout.Box("Server Connection", constants.title, new GUILayoutOption[0]);
     GUILayout.BeginVertical(constants.contentBox, new GUILayoutOption[0]);
     this.DoConfigGUI();
     if (AssetServer.GetAssetServerError() != string.Empty)
     {
         GUILayout.Space(10f);
         GUILayout.Label(AssetServer.GetAssetServerError(), constants.errorLabel, new GUILayoutOption[0]);
         GUILayout.Space(10f);
     }
     GUILayout.EndVertical();
     GUILayout.EndVertical();
     this.DoProjectsGUI();
     GUILayout.EndHorizontal();
     return(true);
 }
 private static void Testing_Invoke(string klass, string method, params object[] prms)
 {
     try
     {
         foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
         {
             if (assembly.GetName().Name != "UnityEditor" && assembly.GetName().Name != "UnityEngine")
             {
                 foreach (System.Type type in AssemblyHelper.GetTypesFromAssembly(assembly))
                 {
                     if (type.Name == klass)
                     {
                         type.InvokeMember(method, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.InvokeMethod, (Binder)null, (object)null, prms);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         if (ex.InnerException != null && ex.InnerException.GetType() == typeof(ExitGUIException))
         {
             throw ex;
         }
         ASEditorBackend.Testing_Invoke(AssetServer.GetString("s_ExceptionHandlerClass"), AssetServer.GetString("s_ExceptionHandlerFunction"), (object)ex);
     }
 }
示例#9
0
 private static void Testing_DummyCallback(bool success)
 {
     ASEditorBackend.Testing_Invoke(AssetServer.GetAndRemoveString("s_TestingClass"), AssetServer.GetAndRemoveString("s_TestingFunction"), new object[]
     {
         success
     });
 }
示例#10
0
        private bool DoShowDiff(bool binary)
        {
            List <string>      list  = new List <string>();
            List <CompareInfo> list2 = new List <CompareInfo>();
            int num;

            if (AssetServer.IsItemDeleted(this.selectedGUID))
            {
                num = -2;
            }
            else
            {
                num = AssetServer.GetWorkingItemChangeset(this.selectedGUID);
                num = AssetServer.GetServerItemChangeset(this.selectedGUID, num);
            }
            int serverItemChangeset = AssetServer.GetServerItemChangeset(this.selectedGUID, -1);
            int ver = (serverItemChangeset != -1) ? serverItemChangeset : -2;

            list.Add(this.selectedGUID);
            list2.Add(new CompareInfo(num, ver, (!binary) ? 0 : 1, (!binary) ? 1 : 0));
            bool result;

            if (list.Count != 0)
            {
                AssetServer.CompareFiles(list.ToArray(), list2.ToArray());
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }
示例#11
0
        public static bool InitializeMaintBinding()
        {
            int         num;
            PListConfig config = new PListConfig("Library/ServerPreferences.plist");
            string      user   = config["Maint UserName"];
            string      str2   = config["Maint Server"];
            string      str3   = config["Maint project name"];
            string      str4   = config["Maint database name"];
            string      str5   = config["Maint port number"];

            if (!int.TryParse(config["Maint Timeout"], out num))
            {
                num = 5;
            }
            if (((str2.Length == 0) || (str3.Length == 0)) || ((str4.Length == 0) || (user.Length == 0)))
            {
                AssetServer.SetProjectName(string.Empty);
                return(false);
            }
            AssetServer.SetProjectName(string.Format("{0} @ {1}", str3, str2));
            string[] textArray1       = new string[] { "host='", str2, "' user='******' password='******' dbname='", str4, "' port='", str5, "' sslmode=disable ", config["Maint Connection Settings"] };
            string   connectionString = string.Concat(textArray1);

            AssetServer.Initialize(user, connectionString, num);
            return(true);
        }
示例#12
0
 private void DoGetUsers()
 {
     MaintUserRecord[] users = AssetServer.AdminGetUsers(this.databases[this.lv.row].dbName);
     this.users         = users == null ? new MaintUserRecord[0] : users;
     this.lv2.totalRows = this.users.Length;
     this.lv2.row       = -1;
 }
示例#13
0
        public void DoRecover()
        {
            string[] selectedDeletedItemGUIDs   = this.GetSelectedDeletedItemGUIDs();
            Dictionary <string, int> dictionary = new Dictionary <string, int>();
            int num = 0;

            for (int i = 0; i < selectedDeletedItemGUIDs.Length; i++)
            {
                for (int j = 0; j < this.m_DeletedItems.Length; j++)
                {
                    if (this.m_DeletedItems[j].guid == selectedDeletedItemGUIDs[i])
                    {
                        dictionary[this.m_DeletedItems[j].guid] = j;
                        break;
                    }
                }
            }
            DeletedAsset[] assets = new DeletedAsset[dictionary.Count];
            while (dictionary.Count != 0)
            {
                DeletedAsset asset = null;
                foreach (KeyValuePair <string, int> pair in dictionary)
                {
                    asset = this.m_DeletedItems[pair.Value];
                    if (!dictionary.ContainsKey(asset.parent))
                    {
                        assets[num++] = asset;
                        break;
                    }
                }
                dictionary.Remove(asset.guid);
            }
            AssetServer.SetAfterActionFinishedCallback("ASEditorBackend", "CBReinitASMainWindow");
            AssetServer.DoRecoverOnNextTick(assets);
        }
示例#14
0
        public static bool Testing_SetupDatabase(string host, int port, string adminUser, string adminPwd, string user, string pwd, string projectName)
        {
            AssetServer.AdminSetCredentials(host, port, adminUser, adminPwd);
            MaintDatabaseRecord[] array = AssetServer.AdminRefreshDatabases();
            if (array == null)
            {
                return(false);
            }
            MaintDatabaseRecord[] array2 = array;
            for (int i = 0; i < array2.Length; i++)
            {
                MaintDatabaseRecord maintDatabaseRecord = array2[i];
                if (maintDatabaseRecord.name == projectName)
                {
                    AssetServer.AdminDeleteDB(projectName);
                }
            }
            if (AssetServer.AdminCreateDB(projectName) == 0)
            {
                return(false);
            }
            string databaseName = AssetServer.GetDatabaseName(host, adminUser, adminPwd, port.ToString(), projectName);

            if (!AssetServer.AdminSetUserEnabled(databaseName, user, user, string.Empty, 1))
            {
                return(false);
            }
            ASEditorBackend.Testing_SetActiveDatabase(host, port, projectName, databaseName, user, pwd);
            return(true);
        }
示例#15
0
        private void DoConnect()
        {
            EditorPrefs.SetString("ASAdminServer", this.server);
            this.userSelected    = false;
            this.isConnected     = false;
            this.projectSelected = false;
            this.lv.row          = -1;
            this.lv2.row         = -1;
            this.lv.totalRows    = 0;
            this.lv2.totalRows   = 0;
            int    result = 10733;
            string server;

            if (this.server.IndexOf(":") > 0)
            {
                int.TryParse(this.server.Substring(this.server.IndexOf(":") + 1), out result);
                server = this.server.Substring(0, this.server.IndexOf(":"));
            }
            else
            {
                server = this.server;
            }
            AssetServer.AdminSetCredentials(server, result, this.user, this.password);
            this.DoRefreshDatabases();
        }
示例#16
0
 private static void Testing_Invoke(string klass, string method, params object[] prms)
 {
     try
     {
         AppDomain  currentDomain = AppDomain.CurrentDomain;
         Assembly[] assemblies    = currentDomain.GetAssemblies();
         for (int i = 0; i < assemblies.Length; i++)
         {
             Assembly assembly = assemblies[i];
             if (assembly.GetName().Name != "UnityEditor" && assembly.GetName().Name != "UnityEngine")
             {
                 Type[] typesFromAssembly = AssemblyHelper.GetTypesFromAssembly(assembly);
                 for (int j = 0; j < typesFromAssembly.Length; j++)
                 {
                     Type type = typesFromAssembly[j];
                     if (type.Name == klass)
                     {
                         type.InvokeMember(method, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, null, prms);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         if (ex.InnerException != null && ex.InnerException.GetType() == typeof(ExitGUIException))
         {
             throw ex;
         }
         ASEditorBackend.Testing_Invoke(AssetServer.GetString("s_ExceptionHandlerClass"), AssetServer.GetString("s_ExceptionHandlerFunction"), new object[]
         {
             ex
         });
     }
 }
示例#17
0
        private void DoShowProjects()
        {
            int    num  = 10733;
            string text = this.serverAddress;

            if (text.IndexOf(":") > 0)
            {
                int.TryParse(text.Substring(text.IndexOf(":") + 1), out num);
                text = text.Substring(0, text.IndexOf(":"));
            }
            AssetServer.AdminSetCredentials(text, num, this.userName, this.password);
            MaintDatabaseRecord[] array = AssetServer.AdminRefreshDatabases();
            if (array != null)
            {
                this.projectsList = new string[array.Length];
                for (int i = 0; i < array.Length; i++)
                {
                    this.projectsList[i] = array[i].name;
                }
                this.projectsLv.totalRows = array.Length;
                this.GetDefaultPListConfig();
                this.plc["Maint Server"]      = text;
                this.plc["Maint UserName"]    = this.userName;
                this.plc["Maint port number"] = this.port;
                this.plc.Save();
                ASEditorBackend.SetPassword(text, this.userName, this.password);
                ASEditorBackend.AddUser(this.serverAddress, this.userName);
            }
            else
            {
                this.projectsLv.totalRows = 0;
            }
        }
示例#18
0
        public static bool Testing_SetupDatabase(string host, int port, string adminUser, string adminPwd, string user, string pwd, string projectName)
        {
            AssetServer.AdminSetCredentials(host, port, adminUser, adminPwd);
            MaintDatabaseRecord[] recordArray = AssetServer.AdminRefreshDatabases();
            if (recordArray == null)
            {
                return(false);
            }
            foreach (MaintDatabaseRecord record in recordArray)
            {
                if (record.name == projectName)
                {
                    AssetServer.AdminDeleteDB(projectName);
                }
            }
            if (AssetServer.AdminCreateDB(projectName) == 0)
            {
                return(false);
            }
            string databaseName = AssetServer.GetDatabaseName(host, adminUser, adminPwd, port.ToString(), projectName);

            if (!AssetServer.AdminSetUserEnabled(databaseName, user, user, string.Empty, 1))
            {
                return(false);
            }
            Testing_SetActiveDatabase(host, port, projectName, databaseName, user, pwd);
            return(true);
        }
        private void PerformCurrentAction()
        {
            switch (this.currAction)
            {
            case Action.Main:
                this.currAction = Action.Main;
                this.DoConnect();
                Event.current.Use();
                return;

            case Action.CreateUser:
                AssetServer.AdminCreateUser(this.nUserName, this.nFullName, this.nEmail, this.nPassword1);
                this.currAction = Action.Main;
                if (this.lv.row > -1)
                {
                    this.DoGetUsers();
                }
                Event.current.Use();
                return;

            case Action.SetPassword:
                AssetServer.AdminChangePassword(this.users[this.lv2.row].userName, this.nPassword1);
                this.currAction = Action.Main;
                Event.current.Use();
                return;

            case Action.CreateProject:
                if (AssetServer.AdminCreateDB(this.nProjectName, this.nTemplateProjectName) != 0)
                {
                    this.DoRefreshDatabases();
                    for (int i = 0; i < this.databases.Length; i++)
                    {
                        if (this.databases[i].name == this.nProjectName)
                        {
                            this.lv.row = i;
                            this.DoGetUsers();
                            break;
                        }
                    }
                }
                break;

            case Action.ModifyUser:
                AssetServer.AdminModifyUserInfo(this.databases[this.lv.row].dbName, this.users[this.lv2.row].userName, this.nFullName, this.nEmail);
                this.currAction = Action.Main;
                if (this.lv.row > -1)
                {
                    this.DoGetUsers();
                }
                Event.current.Use();
                return;

            default:
                return;
            }
            this.currAction = Action.Main;
            Event.current.Use();
        }
示例#20
0
 internal static IEnumerable <ExportPackageItem> GetAssetItemsForExport(ICollection <string> guids, bool includeDependencies)
 {
     if (guids.Count == 0)
     {
         string[] collection = new string[0];
         guids = new HashSet <string>(AssetServer.CollectAllChildren(AssetServer.GetRootGUID(), collection));
     }
     if (< > f__am$cache5 == null)
     {
示例#21
0
 public static string[] Testing_GetAllDatabaseNames()
 {
     MaintDatabaseRecord[] recordArray = AssetServer.AdminRefreshDatabases();
     string[] strArray = new string[recordArray.Length];
     for (int i = 0; i < recordArray.Length; i++)
     {
         strArray[i] = recordArray[i].name;
     }
     return(strArray);
 }
示例#22
0
 public static string[] Testing_GetAllDatabaseNames()
 {
     MaintDatabaseRecord[] maintDatabaseRecordArray = AssetServer.AdminRefreshDatabases();
     string[] strArray = new string[maintDatabaseRecordArray.Length];
     for (int index = 0; index < maintDatabaseRecordArray.Length; ++index)
     {
         strArray[index] = maintDatabaseRecordArray[index].name;
     }
     return(strArray);
 }
示例#23
0
 public static string[] Testing_GetAllDatabaseNames()
 {
     MaintDatabaseRecord[] array = AssetServer.AdminRefreshDatabases();
     string[] array2             = new string[array.Length];
     for (int i = 0; i < array.Length; i++)
     {
         array2[i] = array[i].name;
     }
     return(array2);
 }
示例#24
0
        private ChangeFlags GetChangeFlags()
        {
            string gUID = this.GetGUID();

            if (gUID == string.Empty)
            {
                return(ChangeFlags.None);
            }
            return(AssetServer.GetChangeFlags(gUID));
        }
示例#25
0
 public bool DoUpdate(bool afterResolvingConflicts)
 {
     AssetServer.RemoveMaintErrorsFromConsole();
     if (ASEditorBackend.SettingsIfNeeded())
     {
         this.showingConflicts = false;
         AssetServer.SetAfterActionFinishedCallback("ASEditorBackend", "CBReinitOnSuccess");
         AssetServer.DoUpdateOnNextTick(!afterResolvingConflicts, "ShowASConflictResolutionsWindow");
     }
     return(true);
 }
示例#26
0
 private bool AtLeastOneSelectedAssetCanBeMerged()
 {
     for (int i = 0; i < this.downloadConflicts.Length; i++)
     {
         if (this.selectedLV1Items[i] && !AssetServer.AssetIsBinaryByGUID(this.downloadConflicts[i]) && !AssetServer.IsItemDeleted(this.downloadConflicts[i]))
         {
             return(true);
         }
     }
     return(false);
 }
示例#27
0
        private void DoShowDiff(string guid)
        {
            List <string>      list  = new List <string>();
            List <CompareInfo> list2 = new List <CompareInfo>();
            int workingItemChangeset = AssetServer.GetWorkingItemChangeset(guid);

            list.Add(guid);
            list2.Add(new CompareInfo(workingItemChangeset, -1, 0, 1));
            Debug.Log("Comparing asset revisions " + workingItemChangeset.ToString() + " and Local");
            AssetServer.CompareFiles(list.ToArray(), list2.ToArray());
        }
示例#28
0
 private void DownloadFile()
 {
     if ((this.ChangeLogSelectionRev >= 0) && (this.m_ChangeLogSelectionGUID != string.Empty))
     {
         string[] textArray1 = new string[] { "Are you sure you want to download '", this.m_ChangeLogSelectionAssetName, "' from revision ", this.ChangeLogSelectionRev.ToString(), " and lose all changes?" };
         if (EditorUtility.DisplayDialog("Download file", string.Concat(textArray1), "Download", "Cancel"))
         {
             AssetServer.DoRevertOnNextTick(this.ChangeLogSelectionRev, this.m_ChangeLogSelectionGUID);
         }
     }
 }
示例#29
0
 private void SetupDeletedItems()
 {
     this.m_DeletedItems = AssetServer.GetServerDeletedItems();
     this.m_DelPVstate.Clear();
     this.m_DelPVstate.lv = new ListViewState(0);
     this.m_DelPVstate.AddAssetItems(this.m_DeletedItems);
     this.m_DelPVstate.AddAssetItems(AssetServer.GetLocalDeletedItems());
     this.m_DelPVstate.SetLineCount();
     this.m_DelPVstate.selectedItems = new bool[this.m_DelPVstate.lv.totalRows];
     this.m_DeletedItemsInitialized  = true;
 }
示例#30
0
        private void ResolveSelectedDownloadConflicts(DownloadResolution res)
        {
            int  num  = -1;
            bool flag = false;
            int  i    = 0;

            while (i < this.downloadConflicts.Length)
            {
                if (this.selectedLV1Items[i])
                {
                    string guid = this.downloadConflicts[i];
                    if (res == DownloadResolution.Merge && (AssetServer.AssetIsBinaryByGUID(guid) || AssetServer.IsItemDeleted(guid)))
                    {
                        flag = true;
                    }
                    else
                    {
                        if (res != DownloadResolution.Unresolved)
                        {
                            if (AssetServer.GetDownloadResolution(guid) == DownloadResolution.Unresolved)
                            {
                                this.downloadConflictsToResolve--;
                            }
                        }
                        else
                        {
                            this.downloadConflictsToResolve++;
                        }
                        this.downloadResolutions[i] = res;
                        AssetServer.SetDownloadResolution(guid, res);
                        num = ((num != -1) ? -2 : i);
                    }
                }
IL_9F:
                i++;
                continue;
                goto IL_9F;
            }
            this.enableContinueButton = (this.downloadConflictsToResolve == 0);
            if (num >= 0)
            {
                this.selectedLV1Items[num] = false;
                if (num < this.selectedLV1Items.Length - 1)
                {
                    this.selectedLV1Items[num + 1] = true;
                }
            }
            this.enableMergeButton = this.AtLeastOneSelectedAssetCanBeMerged();
            if (flag)
            {
                EditorUtility.DisplayDialog("Some conflicting changes cannot be merged", "Notice that not all selected changes where selected for merging. This happened because not all of them can be merged (e.g. assets are binary or deleted).", "OK");
            }
        }