示例#1
0
        } // end SVNListModle

        private void ReadFilesProperties(object sender, DoWorkEventArgs e)
        {
            SvnClient  client  = new SvnClient();
            SvnLogArgs logArgs = new SvnLogArgs();

            logArgs.RetrieveAllProperties = false;
            while (_stringToRead.Count > 0)
            {
                string path = _stringToRead[0];
                _stringToRead.RemoveAt(0);
                try {
                    Collection <SvnLogEventArgs> status;
                    if (!client.GetLog(leftRoot + path, logArgs, out status))
                    {
                        status = null;
                    } // end if
                    leftPathToStatus.Add(path, status);
                } catch (Exception) {
                } // end try
                try {
                    Collection <SvnLogEventArgs> status;
                    if (!client.GetLog(rightRoot + path, logArgs, out status))
                    {
                        status = null;
                    } // end if
                    rightPathToStatus.Add(path, status);
                } catch (Exception) {
                } // end try
                _worker.ReportProgress(0, path);
            }     // end while
            client.Dispose();
        }         // end ReadFilesProperties
 public static void DeinitSVNClient()
 {
     if (client != null)
     {
         client.Dispose();
     }
 }
示例#3
0
        private void OnSvnVerify(object sender, RoutedEventArgs e)
        {
            Collection <SvnListEventArgs> list = new Collection <SvnListEventArgs>();

            try
            {
                SvnClient svn = new SvnClient();
                svn.Authentication.UserNamePasswordHandlers += new EventHandler <SharpSvn.Security.SvnUserNamePasswordEventArgs>(
                    delegate(Object s, SharpSvn.Security.SvnUserNamePasswordEventArgs e1)
                {
                    e1.UserName = usernameTextBox.Text;
                    e1.Password = passwordPasswordBox.Password;
                });
                svn.GetList(target, out list);
                svn.Dispose();
                GlobalVariable.svnUserName = usernameTextBox.Text;
                GlobalVariable.svnPassword = passwordPasswordBox.Password;
                if (this.Owner is WindowFile)
                {
                    ((WindowFile)this.Owner).My_Load();
                }
                else if (this.Owner is CompileToolWindow)
                {
                    ((CompileToolWindow)this.Owner).DrawSvnLog();
                }
                this.Close();
            }
            catch (Exception)
            {
                MessageBox.Show("用户名或密码错误", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
示例#4
0
 public void Dispose()
 {
     if (client != null)
     {
         client.Dispose();
     }
     client = null;
 }
示例#5
0
 public override void Disconnect()
 {
     if (client != null)
     {
         client.Dispose();
         client = null;
     }
 }
示例#6
0
    static void ConvertChangeLog(int startRevision)
    {
        Console.WriteLine("Reading SVN changelog, this might take a while...");

        SvnClient client = new SvnClient();

        StringWriter  writer    = new StringWriter();
        XmlTextWriter xmlWriter = new XmlTextWriter(writer);

        xmlWriter.Formatting = Formatting.Indented;
        xmlWriter.WriteStartDocument();
        xmlWriter.WriteStartElement("log");
        int progressCount = 0;

        client.Log(
            "..",
            new SvnLogArgs {
            // retrieve log in reverse order
            Start = SvnRevision.Base,
            End   = new SvnRevision(startRevision)
        },
            delegate(object sender, SvnLogEventArgs e) {
            if (++progressCount == 10)
            {
                Console.Write(".");
                progressCount = 0;
            }
            xmlWriter.WriteStartElement("logentry");
            xmlWriter.WriteAttributeString("revision", e.Revision.ToString(CultureInfo.InvariantCulture));
            xmlWriter.WriteElementString("author", e.Author);
            xmlWriter.WriteElementString("date", e.Time.ToUniversalTime().ToString("MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture));
            xmlWriter.WriteElementString("msg", e.LogMessage);
            xmlWriter.WriteEndElement();
        }
            );
        xmlWriter.WriteEndDocument();

        Console.WriteLine();

        XmlTextReader input = new XmlTextReader(new StringReader(writer.ToString()));

        XslCompiledTransform xsl = new XslCompiledTransform();

        xsl.Load(@"..\data\ConversionStyleSheets\SVNChangelogToXml.xsl");

        StreamWriter tw = new StreamWriter(@"..\doc\ChangeLog.xml", false, Encoding.UTF8);

        xmlWriter            = new XmlTextWriter(tw);
        xmlWriter.Formatting = Formatting.Indented;
        xsl.Transform(input, xmlWriter);
        xmlWriter.Close();
        tw.Close();

        client.Dispose();

        Console.WriteLine("Finished");
    }
示例#7
0
 public override void Dispose()
 {
     if (_client == null)
     {
         return;
     }
     _client.Dispose();
     _client = null;
     GC.SuppressFinalize(this);
 }
示例#8
0
 protected override void Dispose(bool disposing)
 {
     try
     {
         ReleaseShellMonitor(disposing);
         _client.Dispose();
     }
     finally
     {
         base.Dispose(disposing);
     }
 }
        protected void Dispose(bool disposing)
        {
            try
            {
                if (_usingShell)
                {
                    //ReleaseShellMonitor(disposing);
                }

                _client.Dispose();
            }
            finally
            {
                Dispose(disposing);
            }
        }
示例#10
0
        /// <summary>
        /// Sets credentials for credentials, path and passes the control to the 
        /// implementing task.
        /// </summary>
        /// <returns></returns>
        public override bool Execute()
        {
            SvnClient client = new SvnClient();
            client.Authentication.Clear();
            if (string.IsNullOrEmpty(Password))
            {
                client.Authentication.UserNameHandlers +=
                    delegate(object o, SvnUserNameEventArgs eventArgs)
                    {
                        eventArgs.UserName = Username;
                    };
            }
            else
            {
                client.Authentication.UserNamePasswordHandlers +=
                    delegate(object o, SvnUserNamePasswordEventArgs eventArgs)
                    {
                        eventArgs.UserName = Username;
                        eventArgs.Password = Password;
                    };
            }

            client.Authentication.AddSubversionFileHandlers();

            client.Authentication.SslServerTrustHandlers += SslServerTrustHandlers;
            client.Authentication.SslClientCertificateHandlers += SslClientCertificateHandlers;

            try
            {
                return ExecuteCommand(client);
            }
            finally
            {
                client.Dispose();
            }
        }
示例#11
0
        private static void GetLogs(bool console_mode, string application_path, string repository_location, long last_revision, Output_Type output_type)
        {
            SvnTarget repository;

            SvnClient client = new SvnClient();

            long current_revision = -1;

            if (SvnTarget.TryParse(repository_location, out repository) == true)
            {
                try
                {
                    SvnInfoEventArgs info;
                    client.GetInfo(new Uri(repository_location), out info);
                    current_revision = info.Revision;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);

                    if (console_mode == true)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }

                if (last_revision < current_revision)
                {
                    DataTable datatable = new DataTable("log");
                    datatable.Columns.Add("Revision", typeof(long));
                    datatable.Columns.Add("Author", typeof(string));
                    datatable.Columns.Add("Time", typeof(DateTime));
                    datatable.Columns.Add("ChangedPaths", typeof(string));
                    datatable.Columns.Add("LogMessage", typeof(string));

                    try
                    {
                        System.Collections.ObjectModel.Collection<SvnLogEventArgs> logitems = new System.Collections.ObjectModel.Collection<SvnLogEventArgs>();

                        SvnLogArgs logargs = new SvnLogArgs(new SvnRevisionRange(current_revision, last_revision + 1));

                        client.GetLog(new Uri(repository_location), logargs, out logitems);

                        datatable.BeginLoadData();

                        foreach (SvnLogEventArgs logitem in logitems)
                        {
                            StringBuilder ChangedPaths = new StringBuilder();

                            if (logitem.ChangedPaths != null)
                            {
                                foreach (SvnChangeItem path in logitem.ChangedPaths)
                                {
                                    ChangedPaths.AppendFormat("{1} {2}{0}", Environment.NewLine, path.Action, path.Path);

                                    if (path.CopyFromRevision != -1)
                                    {
                                        ChangedPaths.AppendFormat("{1} -> {2}{0}", Environment.NewLine, path.CopyFromPath, path.CopyFromRevision);
                                    }
                                }
                            }

                            DataRow datarow = datatable.NewRow();
                            datarow["Revision"] = logitem.Revision;
                            datarow["Author"] = logitem.Author;
                            datarow["Time"] = logitem.Time.ToLocalTime();
                            datarow["ChangedPaths"] = ChangedPaths.ToString();
                            datarow["LogMessage"] = logitem.LogMessage;

                            datatable.Rows.Add(datarow);
                        }

                        datatable.EndLoadData();

                        datatable.AcceptChanges();

                        switch (output_type)
                        {
                            case Output_Type.Console:
                                OutputToConsole(console_mode, application_path, datatable);

                                break;
                            case Output_Type.Txt:
                                OutputToTxt(console_mode, application_path, datatable);

                                break;
                            case Output_Type.XML:
                                OutputToXML(console_mode, application_path, datatable);

                                break;
                            case Output_Type.XMLTransform:
                                OutputToXMLTransform(console_mode, application_path, datatable);

                                break;
                            case Output_Type.RSS:
                                OutputToRSS(console_mode, application_path, datatable);

                                break;
                            default:
                                break;
                        }

                        last_revision = Convert.ToInt32(datatable.Compute("max(Revision)", string.Empty));

                        System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                        config.AppSettings.Settings.Remove("last_revision");
                        config.AppSettings.Settings.Add("last_revision", last_revision.ToString());
                        config.Save();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.Message);

                        if (console_mode == true)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }

                client.Dispose();
            }
            else
            {
                Debug.WriteLine("Unable to connect to repository");

                if (console_mode == true)
                {
                    Console.WriteLine("Unable to connect to repository");
                }
            }
        }
示例#12
0
 public void Dispose()
 {
     reporter.Dispose();
     client.Dispose();
 }
示例#13
0
        private static void GetLogs(bool console_mode, string application_path, string repository_location, long last_revision, Output_Type output_type)
        {
            SvnTarget repository;

            SvnClient client = new SvnClient();

            long current_revision = -1;

            if (SvnTarget.TryParse(repository_location, out repository) == true)
            {
                try
                {
                    SvnInfoEventArgs info;
                    client.GetInfo(new Uri(repository_location), out info);
                    current_revision = info.Revision;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);

                    if (console_mode == true)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }

                if (last_revision < current_revision)
                {
                    DataTable datatable = new DataTable("log");
                    datatable.Columns.Add("Revision", typeof(long));
                    datatable.Columns.Add("Author", typeof(string));
                    datatable.Columns.Add("Time", typeof(DateTime));
                    datatable.Columns.Add("ChangedPaths", typeof(string));
                    datatable.Columns.Add("LogMessage", typeof(string));

                    try
                    {
                        System.Collections.ObjectModel.Collection <SvnLogEventArgs> logitems = new System.Collections.ObjectModel.Collection <SvnLogEventArgs>();

                        SvnLogArgs logargs = new SvnLogArgs(new SvnRevisionRange(current_revision, last_revision + 1));

                        client.GetLog(new Uri(repository_location), logargs, out logitems);

                        datatable.BeginLoadData();

                        foreach (SvnLogEventArgs logitem in logitems)
                        {
                            StringBuilder ChangedPaths = new StringBuilder();

                            if (logitem.ChangedPaths != null)
                            {
                                foreach (SvnChangeItem path in logitem.ChangedPaths)
                                {
                                    ChangedPaths.AppendFormat("{1} {2}{0}", Environment.NewLine, path.Action, path.Path);

                                    if (path.CopyFromRevision != -1)
                                    {
                                        ChangedPaths.AppendFormat("{1} -> {2}{0}", Environment.NewLine, path.CopyFromPath, path.CopyFromRevision);
                                    }
                                }
                            }

                            DataRow datarow = datatable.NewRow();
                            datarow["Revision"]     = logitem.Revision;
                            datarow["Author"]       = logitem.Author;
                            datarow["Time"]         = logitem.Time.ToLocalTime();
                            datarow["ChangedPaths"] = ChangedPaths.ToString();
                            datarow["LogMessage"]   = logitem.LogMessage;

                            datatable.Rows.Add(datarow);
                        }

                        datatable.EndLoadData();

                        datatable.AcceptChanges();

                        switch (output_type)
                        {
                        case Output_Type.Console:
                            OutputToConsole(console_mode, application_path, datatable);

                            break;

                        case Output_Type.Txt:
                            OutputToTxt(console_mode, application_path, datatable);

                            break;

                        case Output_Type.XML:
                            OutputToXML(console_mode, application_path, datatable);

                            break;

                        case Output_Type.XMLTransform:
                            OutputToXMLTransform(console_mode, application_path, datatable);

                            break;

                        case Output_Type.RSS:
                            OutputToRSS(console_mode, application_path, datatable);

                            break;

                        default:
                            break;
                        }

                        last_revision = Convert.ToInt32(datatable.Compute("max(Revision)", string.Empty));

                        System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                        config.AppSettings.Settings.Remove("last_revision");
                        config.AppSettings.Settings.Add("last_revision", last_revision.ToString());
                        config.Save();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.Message);

                        if (console_mode == true)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }

                client.Dispose();
            }
            else
            {
                Debug.WriteLine("Unable to connect to repository");

                if (console_mode == true)
                {
                    Console.WriteLine("Unable to connect to repository");
                }
            }
        }
示例#14
0
 // svn 日志的渲染及更新
 public void DrawSvnLog()
 {
     svnLogUris.Clear();
     {
         try
         {
             svnLogUris.Add(new Uri(thisWindowRedis.Get <string>("svn_assist:config:svn_log:1:link")));
             svnLogUris.Add(new Uri(thisWindowRedis.Get <string>("svn_assist:config:svn_log:3:link")));
             svnLogUris.Add(new Uri(thisWindowRedis.Get <string>("svn_assist:config:svn_log:2:link")));
             svnLogUris.Add(new Uri(thisWindowRedis.Get <string>("svn_assist:config:svn_log:4:link")));
         }
         catch (Exception)
         {
             if (MessageBox.Show("svn的部分Uri无效,是否退出程序?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
             {
                 running = false;
                 this.Close();
             }
             else
             {
                 return;
             }
         }
     }
     try
     {
         {
             Thread firstDrawLog = new Thread(new ThreadStart(() => {
                 this.Dispatcher.BeginInvoke(
                     (ThreadStart) delegate()
                 {
                     SvnClient svn = new SvnClient();
                     svn.Authentication.UserNamePasswordHandlers += new EventHandler <SharpSvn.Security.SvnUserNamePasswordEventArgs>(
                         delegate(Object s, SharpSvn.Security.SvnUserNamePasswordEventArgs e1)
                     {
                         e1.UserName = GlobalVariable.svnUserName;
                         e1.Password = GlobalVariable.svnPassword;
                     });
                     Collection <SvnLogEventArgs> svnLogs = new Collection <SvnLogEventArgs>();
                     SvnLogArgs logarg = new SvnLogArgs();
                     logarg.Limit      = maxNumOfDisplay;
                     for (int i = 0; i < svnLogUris.Count; i++)
                     {
                         if (svn.GetLog((Uri)svnLogUris[i], logarg, out svnLogs))
                         {
                             UpdateListView(svnLogs, (ListView)svnLogListViews[i]);
                         }
                     }
                     svn.Dispose();
                 });
             }));
             firstDrawLog.IsBackground = true;
             firstDrawLog.Start();
         }
         StartUpdateSvnLog();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, ex.Source, MessageBoxButton.OK, MessageBoxImage.Warning);
     }
 }
示例#15
0
        private void CompileToolWindow_Loaded(object sender, RoutedEventArgs e)
        {
            thisWindowRedis = new RedisClient(MainWindow.myRedisIP, MainWindow.myRedisPort, null, MainWindow.database);
            MyInitial();
            // 根据权限初始化按钮
            {
                ArrayList allTrunkCodeBtn = new ArrayList();
                {
                    allTrunkCodeBtn.Add(trunkCodeBtn1);
                    allTrunkCodeBtn.Add(trunkCodeBtn2);
                    allTrunkCodeBtn.Add(trunkCodeBtn3);
                    allTrunkCodeBtn.Add(trunkCodeBtn4);
                    setBtn(allTrunkCodeBtn, RedisKeyName.trunkCodeCommandSet, RedisKeyName.trunkCodeCommandPrefix, RedisKeyName.userAuthorityPrefix);
                }
                ArrayList allBranchCodeBtn = new ArrayList();
                {
                    allBranchCodeBtn.Add(branchCodeBtn1);
                    allBranchCodeBtn.Add(branchCodeBtn2);
                    allBranchCodeBtn.Add(branchCodeBtn3);
                    allBranchCodeBtn.Add(branchCodeBtn4);
                    setBtn(allBranchCodeBtn, RedisKeyName.branchCodeCommandSet, RedisKeyName.branchCodeCommandPrefix, RedisKeyName.userAuthorityPrefix);
                }
                {
                    byte[][] allCommand = thisWindowRedis.SMembers(RedisKeyName.serverCommandSet);
                    foreach (var item in allCommand)
                    {
                        MenuItem newMenuItem = new MenuItem();
                        newMenuItem.Header = thisWindowRedis.Get <string>(RedisKeyName.serverCommandPrefix +
                                                                          Encoding.UTF8.GetString(item) + ":name");
                        newMenuItem.Name   = Encoding.UTF8.GetString(item);
                        newMenuItem.Click += OnMenuItemClick;
                        if (MainWindow.myAuthority == 3 || thisWindowRedis.Get <int>(
                                RedisKeyName.userAuthorityPrefix +
                                MainWindow.myUsername + ":" +
                                Encoding.UTF8.GetString(item)) == 1)
                        {
                            newMenuItem.IsEnabled = true;
                        }
                        else
                        {
                            newMenuItem.IsEnabled = false;
                        }
                        SMenu.Items.Add(newMenuItem);
                    }
                    allCommand = thisWindowRedis.SMembers(RedisKeyName.tagIDSet);
                    foreach (var item in allCommand)
                    {
                        MenuItem newMenuItem = new MenuItem();
                        newMenuItem.Tag    = Encoding.UTF8.GetString(item);
                        newMenuItem.Header = thisWindowRedis.Get <string>(
                            RedisKeyName.binTagPrefix +
                            Encoding.UTF8.GetString(item) + ":param").Replace(" ", "/").Replace("_", "__");
                        newMenuItem.Click += OnSwitchTo;
                        newMenuItem.Name   = thisWindowRedis.Get <string>(
                            RedisKeyName.binTagPrefix +
                            Encoding.UTF8.GetString(item) + ":name");
                        string fatherName = thisWindowRedis.Get <string>(
                            RedisKeyName.binTagPrefix +
                            Encoding.UTF8.GetString(item) + ":father"
                            );
                        newMenuItem.IsEnabled = true;
                        MenuItem fatherMenuItem = FindChildByName(SMenu, fatherName);
                        if (fatherMenuItem != null)
                        {
                            fatherMenuItem.Items.Add(newMenuItem);
                        }
                    }
                }
            }
            // 服务器列表渲染
            byte[][] allKeys = thisWindowRedis.SMembers(RedisKeyName.serverIDSet);
            foreach (var item in allKeys)
            {
                string serverID = Encoding.UTF8.GetString(item);
                serverListView.Items.Add(new Server(serverID));
                currentBranchOfServer.Add(serverID, thisWindowRedis.Get <int>(RedisKeyName.currentBranchOfServerPrefix + serverID));
            }

            // 等待任务队列渲染
            //list = redis.GetAllItemsFromList(Wtask_list);
            //foreach (var item in list)
            //{
            //    Task2 this_task = js.Deserialize<Task2>(item);
            //    Wtask_queue.Items.Add(this_task);
            //}
            // 等待任务队列更新线程
            Thread updateWaitingTask = new Thread(new ThreadStart(UpdateWaitingTaskQueueListView));

            updateWaitingTask.IsBackground = true;
            updateWaitingTask.Start();

            // 已完成队列渲染
            List <string> finishedTaskList = thisWindowRedis.GetAllItemsFromList(RedisKeyName.finishedTaskList);

            foreach (var taskID in finishedTaskList)
            {
                finishedTaskQueueListView.Items.Insert(0, new Task(taskID));
            }

            // 已完成队列更新线程
            Thread subscrbe = new Thread(new ThreadStart(OnSubscribe));

            subscrbe.IsBackground = true;
            subscrbe.Start();

            // svn日志查看是否需要输入密码
            {
                SvnClient svn    = new SvnClient();
                SvnTarget target = null;
                try
                {
                    target = (SvnTarget)thisWindowRedis.Get <string>("svn_assist:config:svn_log:1:link");
                    svn.Authentication.UserNamePasswordHandlers += new EventHandler <SharpSvn.Security.SvnUserNamePasswordEventArgs>(
                        delegate(Object s, SharpSvn.Security.SvnUserNamePasswordEventArgs e1)
                    {
                        e1.UserName = GlobalVariable.svnUserName;
                        e1.Password = GlobalVariable.svnPassword;
                    });
                    Collection <SvnListEventArgs> list = new Collection <SvnListEventArgs>();
                    svn.GetList(target, out list);
                    DrawSvnLog();
                }
                catch (ArgumentNullException ex)
                {
                    MessageBox.Show(ex.Message, ex.Source, MessageBoxButton.OK, MessageBoxImage.Warning);
                }
                catch (SvnException)
                {
                    SvnLoginInWindow slw = new SvnLoginInWindow(target);
                    slw.Show();
                    slw.Owner = this;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, ex.Source, MessageBoxButton.OK, MessageBoxImage.Warning);
                }
                svn.Dispose();
            }

            // svn 高亮当前版本
            Thread highLightCurrentRevision = new Thread(new ThreadStart(HighLightCurrentRevision));

            highLightCurrentRevision.IsBackground = true;
            highLightCurrentRevision.Start();
        }
示例#16
0
 protected void Dispose(bool disposing)
 {
     reporter.Dispose();
     client.Dispose();
     realtimeTextWriter.Dispose();
 }
 //True if disposal is deterministic, meaning we should dispose managed objects.
 private void Dispose(bool deterministic)
 {
     client.Dispose();
 }