예제 #1
0
        public VcsExporter(WorkQueue workQueue, Logger logger,
                           RevisionAnalyzer revisionAnalyzer, ChangesetBuilder changesetBuilder,
                           IVcsWrapper vcsWrapper, IDictionary <string, string> usersmap)
            : base(workQueue, logger)
        {
            this.database           = revisionAnalyzer.Database;
            this.revisionAnalyzer   = revisionAnalyzer;
            this.changesetBuilder   = changesetBuilder;
            this.vcsWrapper         = vcsWrapper;
            this.emailDictionary    = new Dictionary <string, string>();
            this.usernameDictionary = new Dictionary <string, string>();
            Regex emailRegex = new Regex("(\\S.*?)\\s*<(.+)>");

            foreach (var e in usersmap)
            {
                string key   = e.Key.ToLower();
                string email = e.Value.Trim();
                if (email == "")
                {
                    continue;
                }
                Match m = emailRegex.Match(email);
                if (m.Success)
                {
                    this.usernameDictionary.Add(key, m.Groups[1].Value);
                    email = m.Groups[2].Value;
                }
                this.emailDictionary.Add(key, email);
            }
        }
예제 #2
0
 public GitExporter(WorkQueue workQueue, Logger logger,
                    RevisionAnalyzer revisionAnalyzer, ChangesetBuilder changesetBuilder)
     : base(workQueue, logger)
 {
     this.database         = revisionAnalyzer.Database;
     this.revisionAnalyzer = revisionAnalyzer;
     this.changesetBuilder = changesetBuilder;
 }
예제 #3
0
 public GitExporter(WorkQueue workQueue, Logger logger,
                    RevisionAnalyzer revisionAnalyzer, ChangesetBuilder changesetBuilder,
                    string repoPath, FileAnalyzer fileAnalyzer, bool inheritProjectDir = false)
     : base(workQueue, logger)
 {
     this.database          = revisionAnalyzer.Database;
     this.revisionAnalyzer  = revisionAnalyzer;
     this.changesetBuilder  = changesetBuilder;
     this.repoPath          = repoPath;
     this.fileAnalyzer      = fileAnalyzer;
     this.inheritProjectDir = inheritProjectDir;
 }
예제 #4
0
 public GitExporter(
     WorkQueue workQueue, Logger logger,
     RevisionAnalyzer revisionAnalyzer,
     ChangesetBuilder changesetBuilder,
     IMessageDispatcher messageDispatcher)
     : base(workQueue, logger, messageDispatcher)
 {
     database = revisionAnalyzer.Database;
     this.revisionAnalyzer  = revisionAnalyzer;
     this.changesetBuilder  = changesetBuilder;
     this.messageDispatcher = messageDispatcher;
 }
예제 #5
0
 public RunInfo(
     MainForm form,
     string outputDir,
     Logger commonLogger,
     VssDatabase db,
     Encoding selectedEncoding,
     Logger errorLogger,
     WorkQueue workQueue,
     Queue <ProjectInfo> toProcess)
 {
     this.form             = form;
     this.outputDir        = outputDir;
     this.processDir       = Path.Combine(outputDir, PROCESS_DIR_NAME);
     this.logFile          = Path.Combine(this.outputDir, PROCESS_DIR_NAME + ".log");
     this.commonLogger     = commonLogger;
     this.db               = db;
     this.selectedEncoding = selectedEncoding;
     this.errorLogger      = errorLogger;
     this.workQueue        = workQueue;
     this.toProcess        = toProcess;
 }
예제 #6
0
 public RevisionAnalyzer(WorkQueue workQueue, Logger logger, VssDatabase database)
     : base(workQueue, logger)
 {
     this.database = database;
 }
예제 #7
0
파일: MainForm.cs 프로젝트: xewelus/vss2git
        private void goButton_Click(object sender, EventArgs e)
        {
            this.goButton.Enabled             = false;
            this.projectsTreeControl.CanCheck = false;

            this.WriteSettings();

            string outputDir;

            if (this.outDirTextBox.TextLength == 0)
            {
                outputDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
            }
            else
            {
                outputDir = this.outDirTextBox.Text;
            }

            if (!Directory.Exists(outputDir))
            {
                Directory.CreateDirectory(outputDir);
            }

            string timeStr = DateTime.Now.ToString("yyyyMMddHHmmssfff");

            string commonLogFile = Path.Combine(outputDir, $"_{timeStr}.log");
            Logger commonLogger  = this.OpenLog(commonLogFile);

            string errorLogFile = Path.Combine(outputDir, $"_{timeStr}_errors.log");
            Logger errorLogger  = this.OpenLog(errorLogFile);

            try
            {
                commonLogger.WriteLine("VSS2Git version {0}", Assembly.GetExecutingAssembly().GetName().Version);

                Encoding encoding = this.selectedEncoding;

                commonLogger.WriteLine("VSS encoding: {0} (CP: {1}, IANA: {2})", encoding.EncodingName, encoding.CodePage, encoding.WebName);
                commonLogger.WriteLine("Comment transcoding: {0}", this.transcodeCheckBox.Checked ? "enabled" : "disabled");
                commonLogger.WriteLine("Ignore errors: {0}", this.ignoreErrorsCheckBox.Checked ? "enabled" : "disabled");

                List <ProjectInfo>  projects  = this.projectsTreeControl.GetSelectedProjects();
                Queue <ProjectInfo> toProcess = new Queue <ProjectInfo>();
                VssDatabase         db        = null;
                foreach (ProjectInfo projectInfo in projects)
                {
                    string projPath = GetProjectPath(outputDir, projectInfo.VssKey, true);
                    if (!Directory.Exists(projPath))
                    {
                        db = projectInfo.Project.Database;
                        toProcess.Enqueue(projectInfo);
                    }
                }

                this.runInfo = new RunInfo(this, outputDir, commonLogger, db, encoding, errorLogger, this.workQueue, toProcess);

                this.statusTimer.Enabled = true;
            }
            catch (Exception ex)
            {
                string msg = $"GLOBAL ERROR: {ex}";

                errorLogger.WriteLine(msg);
                commonLogger.WriteLine(msg);

                this.ShowException(ex);
            }
        }
예제 #8
0
 public RevisionAnalyzer(WorkQueue workQueue, Logger logger, VssDatabase database, IMessageDispatcher messageDispatcher)
     : base(workQueue, logger, messageDispatcher)
 {
     this.Database = database;
 }