LaunchDiffOperations.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. changesetFullSpec,
  18. isGluonMode);
  19. }
  20. internal static void DiffChangeset(
  21. RepositorySpec repSpec,
  22. ChangesetInfo changesetInfo,
  23. bool isGluonMode)
  24. {
  25. if (changesetInfo == null)
  26. return;
  27. string changesetFullSpec = GetChangesetFullSpec(
  28. repSpec, changesetInfo.ChangesetId);
  29. LaunchTool.OpenChangesetDiffs(
  30. changesetFullSpec,
  31. isGluonMode);
  32. }
  33. internal static void DiffSelectedChangesets(
  34. RepositorySpec repSpec,
  35. ChangesetInfo cset1,
  36. ChangesetInfo cset2,
  37. bool isGluonMode)
  38. {
  39. ChangesetInfo srcChangesetInfo;
  40. ChangesetInfo dstChangesetInfo;
  41. GetSrcAndDstCangesets(
  42. cset1,
  43. cset2,
  44. out srcChangesetInfo,
  45. out dstChangesetInfo);
  46. string srcChangesetFullSpec = GetChangesetFullSpec(
  47. repSpec, srcChangesetInfo.ChangesetId);
  48. string dstChangesetFullSpec = GetChangesetFullSpec(
  49. repSpec, dstChangesetInfo.ChangesetId);
  50. LaunchTool.OpenSelectedChangesetsDiffs(
  51. srcChangesetFullSpec,
  52. dstChangesetFullSpec,
  53. isGluonMode);
  54. }
  55. internal static void DiffBranch(
  56. RepositorySpec repSpec,
  57. ChangesetExtendedInfo changesetExtendedInfo,
  58. bool isGluonMode)
  59. {
  60. if (changesetExtendedInfo == null)
  61. return;
  62. string branchFullSpec = GetBranchFullSpec(
  63. repSpec, changesetExtendedInfo);
  64. LaunchTool.OpenBranchDiffs(
  65. branchFullSpec,
  66. isGluonMode);
  67. }
  68. static void GetSrcAndDstCangesets(
  69. ChangesetInfo cset1,
  70. ChangesetInfo cset2,
  71. out ChangesetInfo srcChangesetInfo,
  72. out ChangesetInfo dstChangesetInfo)
  73. {
  74. if (cset1.LocalTimeStamp < cset2.LocalTimeStamp)
  75. {
  76. srcChangesetInfo = cset1;
  77. dstChangesetInfo = cset2;
  78. return;
  79. }
  80. srcChangesetInfo = cset2;
  81. dstChangesetInfo = cset1;
  82. }
  83. static string GetChangesetFullSpec(
  84. RepositorySpec repSpec,
  85. long changesetId)
  86. {
  87. return string.Format("cs:{0}@{1}",
  88. changesetId, repSpec.ToString());
  89. }
  90. static string GetBranchFullSpec(
  91. RepositorySpec repSpec,
  92. ChangesetExtendedInfo changesetExtendedInfo)
  93. {
  94. return string.Format("br:{0}@{1}",
  95. changesetExtendedInfo.BranchName,
  96. repSpec.ToString());
  97. }
  98. }
  99. }