/// <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); }
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); } }