LaunchDiffOperations.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using Codice.CM.Common;
  2. using Unity.PlasticSCM.Editor.Tool;
  3. namespace Unity.PlasticSCM.Editor.Views.Changesets
  4. {
  5. static class LaunchDiffOperations
  6. {
  7. internal static void DiffChangeset(
  8. RepositorySpec repSpec,
  9. long changesetId,
  10. bool isGluonMode)
  11. {
  12. if (changesetId == -1)
  13. return;
  14. string changesetFullSpec = GetChangesetFullSpec(
  15. repSpec, changesetId);
  16. LaunchTool.OpenChangesetDiffs(
  17. repSpec,
  18. changesetFullSpec,
  19. isGluonMode);
  20. }
  21. internal static void DiffChangeset(
  22. RepositorySpec repSpec,
  23. ChangesetInfo changesetInfo,
  24. bool isGluonMode)
  25. {
  26. if (changesetInfo == null)
  27. return;
  28. string changesetFullSpec = GetChangesetFullSpec(
  29. repSpec, changesetInfo.ChangesetId);
  30. LaunchTool.OpenChangesetDiffs(
  31. repSpec,
  32. changesetFullSpec,
  33. isGluonMode);
  34. }
  35. internal static void DiffSelectedChangesets(
  36. RepositorySpec repSpec,
  37. ChangesetInfo cset1,
  38. ChangesetInfo cset2,
  39. bool isGluonMode)
  40. {
  41. ChangesetInfo srcChangesetInfo;
  42. ChangesetInfo dstChangesetInfo;
  43. GetSrcAndDstCangesets(
  44. cset1,
  45. cset2,
  46. out srcChangesetInfo,
  47. out dstChangesetInfo);
  48. string srcChangesetFullSpec = GetChangesetFullSpec(
  49. repSpec, srcChangesetInfo.ChangesetId);
  50. string dstChangesetFullSpec = GetChangesetFullSpec(
  51. repSpec, dstChangesetInfo.ChangesetId);
  52. LaunchTool.OpenSelectedChangesetsDiffs(
  53. repSpec,
  54. srcChangesetFullSpec,
  55. dstChangesetFullSpec,
  56. isGluonMode);
  57. }
  58. internal static void DiffBranch(
  59. RepositorySpec repSpec,
  60. ChangesetExtendedInfo changesetExtendedInfo,
  61. bool isGluonMode)
  62. {
  63. if (changesetExtendedInfo == null)
  64. return;
  65. string branchFullSpec = GetBranchFullSpec(
  66. repSpec, changesetExtendedInfo);
  67. LaunchTool.OpenBranchDiffs(
  68. repSpec,
  69. branchFullSpec,
  70. isGluonMode);
  71. }
  72. static void GetSrcAndDstCangesets(
  73. ChangesetInfo cset1,
  74. ChangesetInfo cset2,
  75. out ChangesetInfo srcChangesetInfo,
  76. out ChangesetInfo dstChangesetInfo)
  77. {
  78. if (cset1.LocalTimeStamp < cset2.LocalTimeStamp)
  79. {
  80. srcChangesetInfo = cset1;
  81. dstChangesetInfo = cset2;
  82. return;
  83. }
  84. srcChangesetInfo = cset2;
  85. dstChangesetInfo = cset1;
  86. }
  87. static string GetChangesetFullSpec(
  88. RepositorySpec repSpec,
  89. long changesetId)
  90. {
  91. return string.Format("cs:{0}@{1}",
  92. changesetId, repSpec.ToString());
  93. }
  94. static string GetBranchFullSpec(
  95. RepositorySpec repSpec,
  96. ChangesetExtendedInfo changesetExtendedInfo)
  97. {
  98. return string.Format("br:{0}@{1}",
  99. changesetExtendedInfo.BranchName,
  100. repSpec.ToString());
  101. }
  102. }
  103. }