using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Seapine.SurroundSCM.API; using Perforce.P4; using System.Diagnostics; using System.IO; namespace Surround_To_Perforce { public partial class StatusLog : Form { public StatusLog(SSCMContext context, Perforce.P4.Repository rep) { InitializeComponent(); try { // Make sure you're conncted to P4 Process.Start("LoginP4.bat").WaitForExit(); // Create a new depot to stand as the mainline //Process.Start("CreateDepot.bat " + context.GetMainline()); Process.Start("cmd.exe", "/c CreateDepot.bat " + context.GetMainline()); #region // First gather all of the branches and branch paths for the Mainline // Gather branch information from Surround SCM SSCMBranch[] branchArray = new SSCMBranch[0]; SSCMAPI.GetBranches(context, true, out branchArray); List<SSCMBranch> branchList = new List<SSCMBranch> { }; // List of branches and their information List<string> branchPathList = new List<string> { }; // List of Parent|Child branch pairs foreach (SSCMBranch b in branchArray) { SetProgressText("Processing branch: " + b.GetName()); branchList.Add(b); branchPathList.Add(b.GetName()); } for (int i = 0; i < branchList.Count(); i++) { Array.Clear(branchArray, 0, branchArray.Length); context.SetBranch(branchList.ElementAt(i).GetName()); SSCMAPI.GetBranches(context, true, out branchArray); foreach (SSCMBranch branch in branchArray) { SetProgressText("Processing branch: " + branch.GetName()); branchList.Add(branch); SetProgressText("Processing branch path: " + branchList.ElementAt(i).GetName() + "|" + branch.GetName()); branchPathList.Add(branchList.ElementAt(i).GetName() + "|" + branch.GetName()); } } // Get the SSCM File Directory to the P4 Client Directory #endregion #region Now that we have all of the branches, go through and pull together the repository and file structure for each baseline branch foreach (SSCMBranch br in branchList) { } #endregion #region old code SSCMFile[] fileArr = new SSCMFile[0]; SSCMAPI.SearchFilesByRegex(context, ".*", out fileArr); foreach (SSCMFile f in fileArr) { SetProgressText("Processing file: " + f.GetName()); FileHistoryItem[] history = new FileHistoryItem[0]; SSCMAPI.FileHistoryByVersion(context, f.GetRepository(), f.GetName(), true, true, Seapine.SurroundSCM.API.FileAction.AllActions, 1, Convert.ToInt32(f.GetVersion()), out history); SetProgressText("============================================"); foreach (FileHistoryItem fhi in history) { SetProgressText("File Action: " + fhi.GetFileAction()); SetProgressText("Timestamp: " + fhi.GetTimestamp()); SetProgressText("Comments: " + fhi.GetComment()); } SetProgressText("============================================"); } #endregion } catch (Exception ex) { SetProgressText("Error caught during execution: " + ex.Message); } } public static bool CreateBranch(String branch_id, String username, Perforce.P4.Repository rep) { try { var branch = new Perforce.P4.BranchSpec(branch_id, username, DateTime.Now, DateTime.Now, "Created by Surround SCM to P4 migration tool.", true, null, null, null); var created = rep.CreateBranchSpec(branch); } catch (Exception e) { Console.WriteLine("Unknown exception calling Perforce."); Console.Write(e.Message); return false; } return true; } private void btnDone_Click(object sender, EventArgs e) { this.Close(); } private void SetProgressText(string newText) { txtProgress.Text = txtProgress.Text + Environment.NewLine + newText; } } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 22708 | C. Thomas Tyler | Updated work-in-progress version. | ||
#1 | 21997 | C. Thomas Tyler |
Added early work-in-progress draft of source files for Surround SCM to Perforce detailed history import tool. Software developed by @kgillman. Also includes a custom .p4ignore file. |