SVN - تحديث نسخة محلية كاملة إلى إصدار الرأس

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

  •  19-09-2019
  •  | 
  •  

سؤال

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

شكرا لك مقدما،
راي

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

المحلول

أوه، من أجل حب بيت! كانت الإجابات حتى الآن - في أفضل الأحوال - مضللة.

من سؤالك، يبدو أنك تحاول شيئا مثل هذا:

svn update -r8
# ok, I can see the deleted file now
svn commit -m "I want r8 to be newest"

باستثناء ذلك لن يعمل. لا توجد تعديلات للالتزام. يمكنك التحديث إلى المراجعات القديمة، لكن لا يمكنك إجراء تغييرات هناك. لا يمكنك تغيير الماضي. يمكنك فقط ارتكاب مراجعة جديدة، والتراجع عن الضرر.

حسنا، دعنا نفترض مستودعك في SVN: // Repo. هنا، يحتوي على مثال مبسط يحتوي فيه جذع المجلد على ملفين "أ" و "ب". دعنا نسمي هذا المراجعة 8 (R8).

trunk    # working copy of svn://repo/trunk
    a
    b

JR Hacker، ينزلق وحذف بطريق الخطأ ب:

svn rm b
svn commit -m "oops"

دعنا ندعو الالتزام الناتج R9.

لذلك، في المرة التالية تقوم بتحديثها من المستودع،

svn update

trunk
    a

ب تختفي! هلع؟ لا، هذا هو نظام تحكم الإصدار. يمكن استعادة أي شيء تم التحقق منه. فيما يلي احتمالان:

مجرد ينسخ الملف من مراجعة قديمة، أي المراجعة الأخيرة حيث لا يزال موجودا: 8.

svn cp svn://repo/trunk/b@8 .
svn commit -m "restored b from revision 8"

الحل الأكثر عمومية هو استخدام أ دمج. وبعد يمكنك استخدام هذه التقنية للتراجع عن أكثر من مجرد حذف طائش.

svn merge -r9:8 . .
svn commit -m "reverted the changes made in revision 8"

طريقة قراءة هذه الدمج هي:

أولا معرفة التغييرات التي يجب إجراؤها للحصول عليها من R9 (مرة أخرى) إلى R8 من مجلد المستودع (SVN: // Repo / Trunk) المرتبطة بالدليل الحالي (الأول "."). الآن، قم بإجراء هذه التغييرات في نسخة العمل في الدليل الحالي (الثاني ".").

يوجد بناء جملة أكثر ملاءمة إذا كنت تعجيل تغيير واحد فقط:

svn merge -c-8  . . #note the minus sign before the 8

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

نصائح أخرى

احصل على نسخة من ملفات المحذوفة في SVN من مراجعتك في مكان ما (على سبيل المثال، مجلد مؤقت على سطح المكتب الخاص بك)، ثم التحديث (الذي سيقوم بإزالة الملفات الأصلية، وفقا لإجراء حذف زميل العمل الملتزم به)، ثم حرك نسخك مرة أخرى وارتكبها مرة أخرى إلى SVN.

سأقوم بما يلي:

ابحث عن رقم المراجعة قبل الحذف ... هل تفريغ svnadmin -r1: [goodreviennumber هنا]> file.dump.

ثم، قم بإنشاء مستودع جديد، "Svnadmin إنشاء [اسم مستودع] ثم قم بتحميل تفريغه في مستودع جديد. "svnadmin تحميل [newrepositoryName] <file.dump.

ثم، تحقق من هذه المراجعة، ونسخ الملفات من الخروج القديم إلى المرء الجديد والالتزام.

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