هل هناك أي طريقة لاستخدام أداة فرق مخصصة مع أداة Cleartool/clearcase؟
سؤال
أرغب في استخدام الفرق الخاص بي عند العمل في طريقة عرض لقطة واضحة.
بقدر ما أستطيع أن أرى، لا توجد طريقة لتحديد أداة فرق عند التشغيل "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
يمكنك محاولة استخدام هذه الخدعة:
إنشاء ملف فارغ
% touch empty
استرداد للإصدار أ
% cleartool diff -ser empty File@@/main/28 > A
استرداد للإصدار B
% cleartool diff -ser empty File@@/main/29 > B
الفرق والربح!
% 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>