private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var fileName = GetSelectedFileName();

            if (fileName == null)
            {
                this.ClearEditor();
                diffLines = new string[0];
                return;
            }

            Action act = () =>
            {
                using (service.DisableRefresh())
                {
                    try
                    {
                        //var ret = tracker.DiffFile(fileName);
                        //ret = ret.Replace("\r", "").Replace("\n", "\r\n");

                        //var tmpFileName = Path.ChangeExtension(Path.GetTempFileName(), ".diff");
                        //File.WriteAllText(tmpFileName, ret);

                        var tmpFileName = tracker.DiffFile(fileName);
                        if (!string.IsNullOrWhiteSpace(tmpFileName) && File.Exists(tmpFileName))
                        {
                            if (new FileInfo(tmpFileName).Length > 2 * 1024 * 1024)
                            {
                                Action action = () => this.DiffEditor.Content = "File is too big to display: " + fileName;
                                Dispatcher.Invoke(action);
                            }
                            else
                            {
                                diffLines = File.ReadAllLines(tmpFileName);
                                Action action = () => this.ShowFile(tmpFileName);
                                Dispatcher.Invoke(action);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        string message = ex.Message;
                        Action action  = () => ShowStatusMessage(message);
                        Dispatcher.Invoke(action);
                    }
                }
            };

            Task.Factory.StartNew(act, CancellationToken.None, TaskCreationOptions.LongRunning, SccProviderService.TaskScheduler)
            .HandleNonCriticalExceptions();
        }
Esempio n. 2
0
        private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var fileName = GetSelectedFileName();

            if (fileName == null)
            {
                this.toolWindow.ClearEditor();
                diffLines = new string[0];
                return;
            }

            //var dispatcher = Dispatcher.CurrentDispatcher;
            Action act = () =>
            {
                try
                {
                    //var ret = tracker.DiffFile(fileName);
                    //ret = ret.Replace("\r", "").Replace("\n", "\r\n");

                    //var tmpFileName = Path.ChangeExtension(Path.GetTempFileName(), ".diff");
                    //File.WriteAllText(tmpFileName, ret);

                    var tmpFileName = tracker.DiffFile(fileName);
                    if (!string.IsNullOrWhiteSpace(tmpFileName) && File.Exists(tmpFileName))
                    {
                        var tuple = this.toolWindow.SetDisplayedFile(tmpFileName);
                        if (tuple != null)
                        {
                            this.DiffEditor.Content = tuple.Item1;
                            this.textView           = tuple.Item2;
                            diffLines = File.ReadAllLines(tmpFileName);
                        }
                    }
                }
                catch (Exception ex)
                {
                    ShowStatusMessage(ex.Message);
                }
            };

            this.Dispatcher.BeginInvoke(act, DispatcherPriority.ApplicationIdle);
        }
        private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var fileName = GetSelectedFileName();

            if (fileName == null)
            {
                this.ClearEditor();
                diffLines = new string[0];
                return;
            }

            Action act = () =>
            {
                service.NoRefresh = true;
                try
                {
                    //var ret = tracker.DiffFile(fileName);
                    //ret = ret.Replace("\r", "").Replace("\n", "\r\n");

                    //var tmpFileName = Path.ChangeExtension(Path.GetTempFileName(), ".diff");
                    //File.WriteAllText(tmpFileName, ret);

                    var tmpFileName = tracker.DiffFile(fileName);
                    if (!string.IsNullOrWhiteSpace(tmpFileName) && File.Exists(tmpFileName))
                    {
                        diffLines = File.ReadAllLines(tmpFileName);
                        this.ShowFile(tmpFileName);
                    }
                }
                catch (Exception ex)
                {
                    ShowStatusMessage(ex.Message);
                }
                service.NoRefresh = false;
            };

            this.Dispatcher.BeginInvoke(act, DispatcherPriority.ApplicationIdle);
        }
        public void DiffFileTest()
        {
            GitFileStatusTracker.Init(tempFolder);
            File.WriteAllLines(tempFile, lines);

            GitFileStatusTracker tracker = new GitFileStatusTracker(tempFolder);
            tracker.StageFile(tempFile);
            tracker.Commit("test message");
            File.WriteAllText(tempFile, "changed text");
            var diff = tracker.DiffFile(tempFile);
            Console.WriteLine(diff);
            Assert.IsTrue(diff.StartsWith("@@ -1,3 +1 @@"));
        }