سؤال

في CVS، تكون نسخة عملي (WC) في فرع معين (والتي سنتصل "فو"). كانت هناك تغييرات أخرى يتم فحصها في فو من قبل ديف آخر. أريد أن أفعل فرق بين مرحلي وحالة فو. عادة، عند العمل في الجذع (الرأس)، أفعل فقط CVS Diff، وهذا جيد. ولكن لسبب ما عند القيام بأعمال إلكترونية عادية فرق في الفرع، فرق فارغ. عندما أحاول استخدام "CVS Diff -r Foo"، يظهر Diff، لكنه مقلوب - يتم عرض الإضافات المنبع مع السلبيات، وتظهر عمليات الإزالة المنبع مع الإيجابيات.

كيف يمكنني إما: (1) الحصول على CVS لتفتيت "الطريقة الأخرى" (بالإضافة إلى الإضافات المنبع)، أو (2) عكس التصحيح (بشكل عام)؟

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

المحلول

إذا كان الغرض الرئيسي من ذلك هو التحقق من "ما الأمر" في ريبو المركزي، أقترح عليك أن تحصل على أنفسكم عارض / متصفح CVS وظيفي / متصفح / شبكة الويب حيث يمكنك تصفح وأرى أحدث التغييرات قبل التحديث. ولكن على افتراض أن كل ما لديك هو السيرة الذاتية لسطر الأوامر، سأحاول أن أعطيك حل على أي حال :)

لذلك، ما لديك هنا هو فرع foo هذا ذهب من A -> B, ، أين B هي حالة الفرع (على الخادم) بعد شيكين المطور الآخر، و A هي الدولة التي قمت بتحديثها آخر مرة نسخ عملك إليها.

عندما تفعل فقط سهل cvs diff في هذه الحالة، سترى التغييرات المحلية الخاصة بك مقارنة ب A حيث A هو ما قمت به. ستظهر حالة السيرة الذاتية المحلية أن كل ملف يأتي من المراجعة على فرع Foo، وعندما يختطف عميل CVS الخاص بك يقوم بتنزيل تلك المراجعة من الخادم. في حالتك، أظن أنه لا يوجد لديك تغييرات محلية منذ حياتك cvs diff فارغ.

ثم، عندما تفعل cvs diff -r foo أنت تختفي المحلية A (أو تغييرات +) مقابل الخادم foo (الذي حاليا في B) - والتغييرات اللازمة للوصول من الخادم B لك A+changes هو بالضبط العكس من تسجيل الوصول المطور الآخر، بالإضافة إلى التغييرات المحلية الخاصة بك.

الآن، إذا كنت تريد حقا معرفة كيف يقارن B (أو TIP-FOO) مع A (إصدار Pristine من أي شيء قمت بالتسجيل إليه حاليا)، ما أعتقد أنه يجب عليك القيام به هو تعيين علامة على نسخة عملك ، ثم فرق هذه العلامة ضد حالة الفرع. شيء من هذا القبيل:

cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1

نصائح أخرى

ربما ما تريد القيام به باستخدام Interdiff من حزمة Batchutils.

غالبا ما أستخدمه بهذه الطريقة لمعرفة ما الذي تغير على الجذع للحصول على ملف معين:

cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null

يمكنك تجربة تصدير ملف من الفرع إلى بعض الملفات المؤقتة ثم قم بإجراء فرق بين نسخ عملك وملف TEMP هذا. يبدو أن أسهل طريقة.

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