Exemplo n.º 1
0
 private static int fo_comp(FileOp fo1, FileOp fo2)
 {
     if (fo1.op.CompareTo(fo2.op) == 0)
     {
         return 0;
     }
     else if (fo1.op.CompareTo("A") == 0)
     {
         return 1;
     }
     else
     {
         return -1;
     }
 }
Exemplo n.º 2
0
        // Aktualizacja danych z serwera SVN
        protected void test_Button_Click(object sender, EventArgs e)
        {
            string returnvalue = string.Empty;
            operacje.Clear();
            int temp_rew = akt_rewizja + 1;

            ProcessStartInfo info = new ProcessStartInfo("svn");
            info.UseShellExecute = false;
            info.Arguments = @"log " + svn_url
                            + " -r " + temp_rew + ":HEAD -v --username " + svn_user
                            + " --password " + svn_pass;
            info.RedirectStandardInput = true;
            info.RedirectStandardOutput = true;
            info.CreateNoWindow = true;

            using (Process process = Process.Start(info))
            {
                returnvalue = process.StandardOutput.ReadToEnd();
            }

            int i = 0, j = 0, n=0, next_n=0, k=0;
            int a = 0, d = 0, m=0;
            string rew = string.Empty;
            while (i < returnvalue.Length && i != -1)
            {
                // osobna lista dla każdej rewizji
                operacje.Add(new List<FileOp>());

                i = returnvalue.IndexOf("\nr", i);
                if (i != -1)
                {
                    next_n = 0;
                    i = i + 2;
                    j = returnvalue.IndexOf(" ", i);
                    // numer rewizji
                    rew = returnvalue.Substring(i, j - i);
                    i = returnvalue.IndexOf("Zmodyfikowane ścieżki:", i);

                    while (next_n != n + 2 && n != -1)
                    {
                        FileOp fo = new FileOp();
                        a = returnvalue.IndexOf(" A ", i);
                        d = returnvalue.IndexOf(" D ", i);
                        m = returnvalue.IndexOf(" M ", i);

                        //if ((a < d && a != -1) || (a != -1 && d == -1))
                        if(a!= -1 && ((a < d && a < m) || (a < d && m == -1) || (a < m && d == -1)))
                        {
                            // kolejny jest Added
                            n = returnvalue.IndexOf("\n", a);
                            next_n = returnvalue.IndexOf("\n", n+1);

                            fo.op = "A";
                            fo.rew = rew;
                            a = returnvalue.IndexOf("/", a);
                            string temp = returnvalue.Substring(0, n);
                            int old = temp.IndexOf("(z", a);
                            int koniec_old = temp.IndexOf(":", a);
                            if (old != -1)
                            {
                                fo.path = returnvalue.Substring(a, (old - 1) - a);
                                fo.old_path = returnvalue.Substring(old + 3, koniec_old - (old + 3));
                            }
                            else
                            {
                                fo.path = returnvalue.Substring(a, n-a-1);
                            }

                            fo.name = is_filename(fo.path);
                            if (string.IsNullOrEmpty(fo.name) == false)
                            {
                                operacje[k].Add(fo);
                            }
                        }
                        else if ((d < m && d != -1) || (m == -1 && d != -1))
                        {
                            // kolejny jest Deleted
                            n = returnvalue.IndexOf("\n", d);
                            next_n = returnvalue.IndexOf("\n", n+1);

                            fo.op = "D";
                            fo.rew = rew;
                            d = returnvalue.IndexOf("/", d);
                            fo.path = returnvalue.Substring(d, n-d-1);
                            fo.name = is_filename(fo.path);
                            if (string.IsNullOrEmpty(fo.name) == false)
                            {
                                operacje[k].Add(fo);
                            }
                        }
                        else if (m != -1)
                        {
                            // kolejny jest Modified
                            n = returnvalue.IndexOf("\n", m);
                            next_n = returnvalue.IndexOf("\n", n + 1);

                            fo.op = "M";
                            fo.rew = rew;
                            m = returnvalue.IndexOf("/", m);
                            fo.path = returnvalue.Substring(m, n - m - 1);
                            fo.name = is_filename(fo.path);
                            if (string.IsNullOrEmpty(fo.name) == false)
                            {
                                operacje[k].Add(fo);
                            }
                        }
                        else
                        {
                            n = returnvalue.IndexOf("\n", i);
                            next_n = returnvalue.IndexOf("\n", n + 1);
                        }

                        i = n+1;
                    }
                    //sortujemy tak by dla każdej rewizji najpierw były operacje dodawania, a dopiero później usuwania
                    usun_nadmiarowe(operacje[k]);
                    operacje[k].Sort(fo_comp);
                    k++;
                }

            }
            update_DB(rew);
            GridView1.DataBind();
        }