Example #1
0
 public void Execute()
 {
     TortoiseProc.Do(TortoiseProc.Command.Log, Config.TheWizardsRoot);
 }
Example #2
0
        public bool ApplyChanges(bool bUpdate = true, bool bIgnoreLocalChanges = false, bool bSkipChangesCheck = false)
        {
            string sExternals;

            // externals changed?
            if (IsChangedEx(out sExternals) || bSkipChangesCheck)
            {
                // temporary select entry
                //m_TreeItem.IsSelected = true;

                bool   bForce            = true;
                string sModifiedElements = "";
                // check for local changes
                foreach (External ext in m_aExternals)
                {
                    if (ext.m_wc.Count > 0)
                    {
                        SvnXmlStatus status = SvnXmlStatus.GetStatus(ext.m_wc[0].Path);
                        sModifiedElements = sModifiedElements + status.GetModifiedElements();
                    }
                }

                // ask, if local changes can be ignored
                if ((sModifiedElements.Length > 0) &&
                    !bIgnoreLocalChanges)
                {
                    bForce = (MessageBoxResult.Yes ==
                              MessageBox.Show("The following elements have local modifications.\n" +
                                              "Do you want to proceed?\n\n" + sModifiedElements,
                                              "Warning", MessageBoxButton.YesNo));
                }

                if (bForce)
                {
                    // because of collision issues with the operative revision -r in externals with the svn propset option -r
                    // we have to use a parameter file
                    string sFilename = General.GetTempFileName();
                    File.WriteAllText(sFilename, sExternals);
                    if (!File.Exists(sFilename))
                    {
                        MessageBox.Show(sFilename, "Unable to create temporary file!");
                        return(false);
                    }

                    string sStdOut,
                           sStdErr;
                    General.ShellWait("svn.exe", "propset svn:externals -F \"" + sFilename + "\" \"" + m_sPath + "\"", out sStdOut, out sStdErr);
                    File.Delete(sFilename);          // remove parameter file

                    if (sStdErr.Length == 0)
                    {
                        if (bUpdate)
                        {
                            bool bResult = TortoiseProc.Update(m_sPath, TortoiseProc.ExitType.CloseOnNoErrors);
                            // trigger view update
                            if (bResult)
                            {
                                foreach (External ext in m_aExternals)
                                {
                                    TreeItem ti = (TreeItem)ext.TreeItem;
                                    ti.VersionPath = "";
                                    ti.Revision    = "";
                                }
                            }
                            return(bResult);
                        }
                    }
                    else
                    {
                        MessageBox.Show(sStdErr, "Error setting property");
                        return(false);
                    }
                }
                return(false);
            }
            else
            {
                // if no externals changed - traverse through externals
                foreach (External ext in m_aExternals)
                {
                    if (null != ext.m_wc)
                    {
                        if (!ext.m_wc[0].ApplyChanges(bUpdate))
                        {
                            return(false);
                        }
                    }
                }

                return(true);
            }
        }