Example #1
0
        /// <summary>
        /// Called when a commit is about to be started.
        /// </summary>
        /// <param name="changes">The changes.</param>
        /// <param name="message">The message.</param>
        /// <param name="commitId">The commit identifier.</param>
        internal void OnCommitCompleted(MetadataTreeChanges changes, string message, ObjectId commitId)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            var args = new CommitCompletedEventArgs(changes, message, commitId);

            CommitCompleted?.Invoke(this, args);
        }
Example #2
0
        public static void Commit([NotNull] this DataService dataService, [NotNull] string fileName, [NotNull] string fileContent, long serverTimestamp, long serverFileSize, [NotNull] string action, bool isDryRun, [NotNull] CommitCompleted callback)
        {
            Assert.ArgumentNotNull(dataService, nameof(dataService));
            Assert.ArgumentNotNull(fileName, nameof(fileName));
            Assert.ArgumentNotNull(fileContent, nameof(fileContent));
            Assert.ArgumentNotNull(action, nameof(action));
            Assert.ArgumentNotNull(callback, nameof(callback));

            ExecuteCompleted c = delegate(string response, ExecuteResult executeResult)
            {
                if (!DataService.HandleExecute(response, executeResult))
                {
                    callback(string.Empty, 0, 0);
                    return;
                }

                var root = Parse(response);
                if (root == null)
                {
                    callback(string.Empty, 0, 0);
                    return;
                }

                var result = root.Value;

                long st;
                if (!long.TryParse(root.GetAttributeValue("timestamp"), out st))
                {
                    st = 0;
                }

                long ss;
                if (!long.TryParse(root.GetAttributeValue("filesize"), out ss))
                {
                    ss = 0;
                }

                callback(result, st, ss);
            };

            dataService.ExecuteAsync("Sitecore.Rocks.Server.Requests.Projects.Commit", c, fileName, fileContent, serverTimestamp.ToString(), serverFileSize, action, isDryRun);
        }
        public override void Commit(ProcessedEventHandler callback)
        {
            Assert.ArgumentNotNull(callback, nameof(callback));

            if (IsAdded && !IsValid)
            {
                Project.Remove(this);
                callback(this, new ProcessedEventArgs(Resources.ProjectFileItem_Commit_deleted));
                return;
            }

            var fileInfo    = new FileInfo(AbsoluteFileName);
            var fileContent = string.Empty;
            var action      = string.Empty;

            if (IsValid)
            {
                fileContent = System.Convert.ToBase64String(System.IO.File.ReadAllBytes(AbsoluteFileName));
            }
            else
            {
                action += Resources.ProjectFileItem_Commit__delete;
            }

            switch (ConflictResolution)
            {
            case ConflictResolution.NotResolved:
                callback(this, new ProcessedEventArgs(Resources.ProjectFileItem_Commit_skipped, Resources.ProjectFileItem_Commit_Conflict_not_resolved_));
                return;

            case ConflictResolution.UseLocalVersion:
                action += Resources.ProjectFileItem_Commit__overwrite;
                break;

            case ConflictResolution.UseServerVersion:
                callback(this, new ProcessedEventArgs(Resources.ProjectFileItem_Commit_skipped, Resources.ProjectFileItem_Commit_Use_Update_command_to_overwrite_local_version_with_server_version));
                return;
            }

            CommitCompleted process = delegate(string result, long serverTimestamp, long serverFileSize)
            {
                var processed = new ProcessedEventArgs(result);

                switch (result)
                {
                case "ok":
                    processed.Text     = IsAdded ? Resources.ProjectFileItem_Commit_added : Resources.ProjectFileItem_Commit_committed;
                    FileSize           = fileInfo.Length;
                    FileTimestamp      = fileInfo.LastWriteTimeUtc.Ticks;
                    ServerTimestamp    = serverTimestamp;
                    ServerFileSize     = serverFileSize;
                    ConflictResolution = ConflictResolution.None;
                    break;

                case "deleted":
                    Project.Remove(this);
                    processed.Text = Resources.ProjectFileItem_Commit_deleted;
                    break;

                case "conflict":
                    ServerTimestamp    = serverTimestamp;
                    ServerFileSize     = serverFileSize;
                    ConflictResolution = ConflictResolution.NotResolved;
                    processed.Text     = Resources.ProjectFileItem_Commit_conflict;
                    break;
                }

                callback(this, processed);
            };

            var site = Project.Site;

            if (site != null)
            {
                site.DataService.Commit(File, fileContent, ServerTimestamp, ServerFileSize, action, false, process);
            }
        }