////////////////////////////////////////////////////////////////////////////// private void UpdateFolder() { if (ItemListView.SelectedRows.Count == 0) { return; } int selectedIndex = ItemListView.Rows.IndexOf(ItemListView.SelectedRows[0]); SvnItem folder = folders[selectedIndex]; if (Config.ChangeLogBeforeUpdate && (folder.reviewedRevision < SvnTools.GetRepositoryHeadRevision(folder))) { MessageBox.Show("You need to see ChangeLog first!", "SVN Notifier", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } UpdateButton.Enabled = UpdateMenuItem.Enabled = CheckNowMenuItem.Enabled = false; folder.Status = SvnStatus.Unknown; newNonUpdatedFolders.Clear(); StatusLabel.Text = "Updating '" + folder.Path + "'..."; UpdateTray(true); Refresh(); // Show "Unknown" folder status during updating updateNotInProgress.Reset(); BeginUpdateFolderStatuses(); SvnTools.Update(folder, false); forcedFolders.Enqueue(folder); updateNotInProgress.Set(); }
public PropertiesForm(SvnItem folder) { InitializeComponent(); _Folder = folder; PathTextBox.Text = folder.Path; if (folder.ActiveStatusUpdateInterval < 0) { ActiveHoursUpDown.Value = Config.DefaultActiveStatusUpdateInterval / 3600; ActiveMinutesUpDown.Value = (Config.DefaultActiveStatusUpdateInterval % 3600) / 60; ActiveSecondsUpDown.Value = Config.DefaultActiveStatusUpdateInterval % 60; InactiveHoursUpDown.Value = Config.DefaultIdleStatusUpdateInterval / 3600; InactiveMinutesUpDown.Value = (Config.DefaultIdleStatusUpdateInterval % 3600) / 60; InactiveSecondsUpDown.Value = Config.DefaultIdleStatusUpdateInterval % 60; StatusUpdateCheckBox.Checked = false; } else { ActiveHoursUpDown.Value = folder.ActiveStatusUpdateInterval / 3600; ActiveMinutesUpDown.Value = (folder.ActiveStatusUpdateInterval % 3600) / 60; ActiveSecondsUpDown.Value = folder.ActiveStatusUpdateInterval % 60; InactiveHoursUpDown.Value = folder.IdleStatusUpdateInterval / 3600; InactiveMinutesUpDown.Value = (folder.IdleStatusUpdateInterval % 3600) / 60; InactiveSecondsUpDown.Value = folder.IdleStatusUpdateInterval % 60; StatusUpdateCheckBox.Checked = true; } EnableCheckBox.Checked = folder.Enabled; StatusUpdateCheckBox.Enabled = EnableCheckBox.Checked; }
public SvnFolderProcess(SvnItem f, Process p, bool isUpdateCommand) { folder = f; process = p; updateError = false; this.isUpdateCommand = isUpdateCommand; }
public static void Commit(SvnItem folder) { string arguments = String.Format(tortoiseCommitArguments, folder.Path); ExecuteResult er = ExecuteProcess(Config.TortoiseSVNpath, null, arguments, false, false); svnFolderProcesses.Add(new SvnFolderProcess(folder, er.process, false)); }
/// <summary> /// This method waits until updating will finish /// </summary> public static void Update(SvnItem folder, bool updateAll) { string revision = Config.ChangeLogBeforeUpdate && !updateAll ? " /rev:" + folder.reviewedRevision : ""; string arguments = String.Format(tortoiseUpdateArguments, folder.Path, revision, Config.UpdateWindowAction); ExecuteProcess(Config.TortoiseSVNpath, null, arguments, true, false); }
public static void OpenChangeLogWindow(SvnItem folder, bool updateRevisions) { if (updateRevisions) { folder.reviewedRevision = GetRepositoryHeadRevision(folder); folder.updateRevision = GetRepositoryCommitedRevision(folder); } string arguments = String.Format(tortoiseChangeLogArguments, folder.Path, folder.updateRevision); ExecuteProcess(Config.TortoiseSVNpath, null, arguments, false, false); }
public static SvnItem Deserialize(string s) { string[] p = s.Split('|'); SvnItem f = new SvnItem(p[0], (PathType)int.Parse(p[4])) { ActiveStatusUpdateInterval = int.Parse(p[1]), IdleStatusUpdateInterval = int.Parse(p[2]), Enabled = !Boolean.Parse(p[3]) }; return(f); }
public static BindingList <SvnItem> ReadSvnFolders() { var folders = new BindingList <SvnItem>(); for (int i = 1; ; i++) { string s = iniFile.ReadString("Folders", "Folder" + i); if (s.Length == 0) { break; } folders.Add(SvnItem.Deserialize(s)); } return(folders); }
// TODO: Optimize speed; join GetRepositoryHeadRevision and GetRepositoryCommitedRevision functions into one: // void int GetRepositoryRevisions (string path, out int headRevision, out int committedRevision) private static int GetRepositoryRevision(SvnItem folder, string arg) { string arguments = String.Format(svnInfoArguments, folder.Path, arg); ExecuteResult er = ExecuteProcess(Config.SVNpath, folder.Path, arguments, true, false); try { SvnXml.Create(er.processOutput); SvnXml.ParseXmlForStatus(); folder.RepositoryUrl = SvnXml.GetValue("url"); return(Convert.ToInt32(SvnXml.GetValue("revision"))); } catch { return(0); } }
public static void BeginUpdateSilently(SvnItem folder) { // Skip this folder if update or commit is in progress foreach (SvnFolderProcess sp in svnFolderProcesses) { if (sp.folder.Path == folder.Path) { return; } } folder.updateRevision = GetRepositoryCommitedRevision(folder); string arguments = String.Format(svnUpdateArguments, folder.Path); ExecuteResult er = ExecuteProcess(Config.SVNpath, null, arguments, false, false); Config.WriteLog("Svn", arguments); svnFolderProcesses.Add(new SvnFolderProcess(folder, er.process, true)); }
public static int GetRepositoryCommitedRevision(SvnItem folder) { return(GetRepositoryRevision(folder, "-r COMMITTED")); }
public static int GetRepositoryHeadRevision(SvnItem folder) { return(GetRepositoryRevision(folder, "-r HEAD")); }
public static SvnStatus GetSvnFolderStatus(SvnItem folder) { string path = folder.Path; if (!Directory.Exists(path) && !File.Exists(path)) { ErrorAdded(path, "File or folder don't exist!"); return(SvnStatus.Error); } if (folder.RepositoryUrl == null) { GetRepositoryRevision(folder, null); // Fill folder.RepositoryUrl } try { string arguments = String.Format(svnStatusArguments, path); ExecuteResult er = ExecuteProcess(Config.SVNpath, path, arguments, true, true); SvnXml.Create(er.processOutput); // Because SVN may return non-valid XML in some cases? try { //http://svn.collab.net/repos/svn/trunk/subversion/svn/status.c //http://blog.wolfman.com/articles/category/svn SvnXml.ParseXmlForStatus(); if (!SvnXml.ContainsKey("revision")) { ErrorAdded(path, "Folder not found in repository"); return(SvnStatus.Error); } if (SvnXml.ContainsKey("NeedUpdate")) { if (SvnXml.ContainsKey("Modified")) { return(SvnStatus.NeedUpdate_Modified); } return(SvnStatus.NeedUpdate); } if (SvnXml.ContainsKey("Modified")) { return(SvnStatus.UpToDate_Modified); } return(SvnStatus.UpToDate); } catch { return(SvnStatus.Error); } } catch { return(SvnStatus.Unknown); } }