هل هناك أي طريقة لاستخدام أداة فرق مخصصة مع أداة Cleartool/clearcase؟

StackOverflow https://stackoverflow.com/questions/375398

  •  22-08-2019
  •  | 
  •  

سؤال

أرغب في استخدام الفرق الخاص بي عند العمل في طريقة عرض لقطة واضحة.

بقدر ما أستطيع أن أرى، لا توجد طريقة لتحديد أداة فرق عند التشغيل "cleartool diff"، لذلك كنت أفكر أنه يمكنني تشغيل شيء مثل"mydiff <predecessor file> <modified file in my view>"، لكنني لا أعرف ما يكفي عن ClearCase حتى أتمكن من العثور على "الملف السابق" للمقارنة معه.

أي طريقة للقيام بذلك؟

نسيت أن أذكر (حتى الآن، بعد قراءة أول إجابتين تتناولان النوافذ) أن هذا موجود على Unix، ولا يُسمح لي بالتلاعب بتكوين ClearCase.

هل كانت مفيدة؟

المحلول 5

وحصلت على وسيلة أخرى العمل على أساس الاقتراحات هنا. اكتشفت cleartool "الحصول على" الأمر، ولذا فإنني تنفيذ هذا للحصول على الإصدار السابق إلى ملف مؤقت:

وcleartool الحصول على -to fname.temp fnameسلفه

ثم تشغيل بلدي فرق، وحذف هذا الملف.

وشكرا لجميع الاقتراحات.

نصائح أخرى

كيفية تغيير أدوات الفرق الافتراضية

يمكنك تحديد أداة فرق خارجية عن طريق تعديل الملف خريطة, ، في "c:\program files ational\ClearCase\lib\mgrs"

يقوم برنامج WinMerge الذي اقترحه Paul بتعديل هذا الملف بالفعل.

يتكون كل خط خريطة من 3 أجزاء:نوع الملف CC وإجراء CC والتطبيق.

ابحث عن القسم في ملف الخريطة لأنواع ملفات text_file_delta.ستجد هناك سطورًا لإجراءات CC المقارنة، وxcompare، وmerge، وxmerge والتي تبدو كما يلي:

text_file_delta   compare          ..\..\bin\cleardiff.exe
text_file_delta   xcompare         ..\..\bin\cleardiffmrg.exe
text_file_delta   merge            ..\..\bin\cleardiff.exe
text_file_delta   xmerge           ..\..\bin\cleardiffmrg.exe

يمكنك استبدالهم بـ قابل للتنفيذ من اختيار أداة الفرق الخاص بك.


أو، برنامج نصي فرق بسيط

إذا كنت تريد الانتقال إلى سطر الأوامر بالكامل في هذا (وهو ما يعجبني ;-) ) ، فيمكن أن يساعدك القليل من ccperl:

#!/bin/perl
my ($file, $switches) = @ARGV;
$switches ||= '-ubBw';

my ($element, $version, $pred) 
    = split(/;/,`cleartool describe -fmt '%En;%Vn;%PVn' $file`);

unless ($pred) { die "ctdiff: $file has no predecessor\n"; }

exec "mydiff $switches $element\@\@$pred $file";

تحذير:اسم المسار الممتد (@@\...) لا يمكن الوصول إليه إلا في العرض الديناميكي (M:\..., ، وليس عرض لقطة (c:\...).

السيناريو ليس له علاقة بالموضوع mapالملف المعروض أعلاه:

  • يحدد هذا الملف "مديري دمج النوع".
  • يتيح لك هذا البرنامج النصي تشغيل أي مدير دمج على أي ملف تريده، دون قراءة أي ملف خريطة للبحث عن الفرق الصحيح لاستخدامه في ملف معين.

هنا، تقوم بتزويد البرنامج النصي بكلتا المعلومات:الملف (كمعلمة) وفرق exe المطلوب تشغيله (ضمن تطبيق البرنامج النصي:يستبدل mydiff بواسطة أي فرق إكس تريد).


أو تحسين البرنامج النصي المختلف (يعمل في طرق العرض الثابتة/اللقطة أيضًا)

فيما يلي نسخة من هذا البرنامج النصي تعمل مع كل من اللقطة والعرض الديناميكي.

لعرض اللقطة، أستخدم اقتراح chacmool: cleartool get.

مرة أخرى، يمكنك استبدال diff الأمر المضمن في هذا البرنامج النصي بواسطة الأداة التي تختارها.

#!/bin/perl
my ($file, $switches) = @ARGV;
$switches ||= '-u';

my ($element, $version, $pred) 
    = split(/;/,`cleartool describe -fmt '%En;%Vn;%PVn' $file`);

unless ($pred) { die "ctdiff: $file has no predecessor\n"; }

# figure out if view is dynamic or snapshot
my $str1 = `cleartool lsview -long -cview`;
if($? == 0) { dodie("pred.pl must be executed within a clearcase view"); }
my @ary1 = grep(/Global path:/, split(/\n/, $str1));
if($str1 =~ /View attributes: snapshot/sm) { $is_snapshot = 1; }

my $predfile = "$element\@\@$pred";
$predfile =~ s/\'//g;#'
#printf("$predfile\n");
if ($is_snapshot) { 
  my $predtemp = "c:\\temp\\pred.txt";
  unlink($predtemp);
  my $cmd = "cleartool get -to $predtemp $predfile"; printf("$cmd\n");
  my $str2 = `$cmd`;
  $predfile = $predtemp;
}
sub dodie {
    my $message = $_[0];
    print($message . "\n");
    exit 1;
}

exec "diff $switches $predfile $file";

وثمة خيار آخر هو استخدام <لأ href = "https://web.archive.org/web/20081206172310/http://www.littleredbat.net/mk/blog/story/63/" يختلط = "نوفولو noreferrer "> بوابة + ClearCase (أو رؤية <وأ href =" https://web.archive.org/web/20100906234536/http://blog.charleso.org/2008/10/clearcase-for- git.html "يختلط =" نوفولو noreferrer "> هذا أو <وأ href =" https://web.archive.org/web/20081204192644/http://www.turbodad.com/articles/24/ 12-مراجعة "يختلط =" نوفولو noreferrer "> هذا ) وعادل فرق مع بوابة.

وهذا هو ملحوظ من السهل اقامة و، في تجربتي، فإنه في الواقع يضر الدماغ أقل لاستخدام نظامين VCS دفعة واحدة بدلا من محاولة للتغلب على CC في كونها أداة القرن ال21.

ومجرد التفكير في بوابة كجسر بين CC وفرق: -)

ويبدو شخص ما يعتقد بالفعل حول هذا الموضوع على snip2code!
هنا إلى tcsh النصي باش أن يفعل بالضبط ما تريد.

مخصص فرق-tool- مقابل clearcase وجوه

وكما ترون ما يلي هو رمز المفتاح للحصول على الإصدار السابق من ملف معين:

وcleartool descr -pred -short $1

وأين $1 هو اسم ملف للمقارنة.


#!/bin/tcsh -e
set _CLEARCASE_VIEW = `cleartool pwv -short -setview`
echo Set view: "$_CLEARCASE_VIEW"
set my_firstversion = ""
set my_secondversion = ""
set my_difftool = kdiff3

# check clearcase view
if ( "$_CLEARCASE_VIEW" == "** NONE **" ) then
  echo "Error: ClearCase view not set, aborted."
  exit -1
endif

if ( "$1" == "" ) then
  echo "Error: missing 1st file argument!"
  echo "Eg: `basename $0` file1.txt -> This will diff file1.txt with its previous version"
  echo "Eg: `basename $0` file1.txt file2.txt -> This will diff file1.txt and file2.txt"
  exit -1
endif  

set my_firstversion = "$1"
echo "my_firstversion=$my_firstversion"

if ( "$2" == "" ) then
  echo "No 2nd file passed, calculating previous version of $my_firstversion"
  set my_secondversion = $my_firstversion@@`cleartool descr -pred -short $my_firstversion`
else
  echo "Setting 2nd file to $2"
  set my_secondversion = "$2"
endif
echo "my_secondversion=$my_secondversion"

${my_difftool} ${my_firstversion} ${my_secondversion} &
وقد بنيت

Kdiff3 في التكامل. فتح الأداة - انتقل إلى إعدادات -> تكوين -> التكامل وانقر على "التكامل مع ClearCase 'زر. هذه الأداة لديه ممتازة 3 طريقة دعم فرق، ويعالج UTF-8 و مع هذا التكامل الآلي لم يكن لديك ما يدعو للقلق حول أنواع العناصر الموجودين في ملف خريطة.

فيما يلي رابط لمستندات IBM حول تغيير أداة الفرق ClearCase XML:

تغيير مدير نوع XML Diff/Merge

http://www-01.ibm.com/support/docview.wss?rs=984&uid=swg21256807

يمكنك محاولة استخدام هذه الخدعة:

  1. إنشاء ملف فارغ

    % touch empty

  2. استرداد للإصدار أ

    % cleartool diff -ser empty File@@/main/28 > A

  3. استرداد للإصدار B

    % cleartool diff -ser empty File@@/main/29 > B

  4. الفرق والربح!

    % your-diff-here A B

ضعه في برنامج نصي واجعل الخيارات أكثر مرونة قليلاً وها هو ذا.

إذا كنت تريد، يمكنك بسهولة قص أداة Cleartool diff الخام مع القليل awk أو cut أو perl أو السم الذي تختاره.

الترحيب لـ ClearCase!

وأنا ركبت "ينمرغ" (أداة فرق حرة) وتثبيته نفسها على أنها أداة clearcase فرق. لست متأكدا كيف فعلت ذلك.

وينمرغ كما ذكر تلقائيا بالكشف عن تثبيت من ClearCase ويعدل ملف خريطة في Clearcase تثبيت المسار.

وكانت قضايا

ولقد شهدت سوف ClearCase فتح أداة فرق الخاصة بها بدلا من ذلك لأن تركيب ينمرغ لم تتغير جميع بنود الضروره. حتى انها فكرة جيدة لقراءة وثائق ClearCase حتى تتمكن من إصلاحه يدويا إذا لزم الأمر.

للي هذا يعمل بشكل جيد:

%vimdiff my_file.c my_file.c@@/main/LATEST

وأنا عادة المضي قدما من هذا القبيل.

وبالنسبة لفرق موحد cleartool diff -pred <my file>

وبالنسبة لفرق رسومية cleartool diff -pred -g <my file>

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top