কীভাবে সাবডিউশন ওয়ার্কিং কপি ইউআইডি পরিবর্তন করবেন?


13

আমি সম্প্রতি স্নোডমিন ডাম্প / লোডের মাধ্যমে একটি পুরানো 1.2.3 সংস্করণ থেকে 1.6.0 এ সাবভার্সন সংগ্রহস্থল আপডেট করেছি । পুরানো সংগ্রহশালাগুলি সমস্ত একই ইউআইডি ব্যবহার করে (একটি টেমপ্লেট সংগ্রহের অনুলিপি করে সংগ্রহস্থলগুলি তৈরি করা হয়েছিল)। আমি সুইডাডমিন সেতুউইডের মাধ্যমে একাধিক নতুন সংগ্রহশালার ইউআইডি পরিবর্তন করেছি to আমি কেবলমাত্র সেই সমস্ত সংগ্রহস্থলগুলির আমার বিদ্যমান কপি অনুলিপি স্থানান্তর করতে পারি না কারণ ইউইউডিগুলি পৃথক। আমি ওয়ার্কিং কপিটি রফতানি করা এবং নতুন সংগ্রহস্থল থেকে চেক আউট সম্পর্কে জানি, তবে আমি ভাবছিলাম যে স্নানাডমিন সেটিংয়ে রিপোজিটারিগুলির জন্য কী করে, ঠিক সেখানে জায়গায় ওয়ার্কিং কপির ইউআইডিকে পরিবর্তন করার কোনও উপায় ছিল কিনা ।

উত্তর:


3

আপনার টানা রেপোতে আপনাকে সমস্ত 'এন্ট্রি' ফাইল সম্পাদনা করতে হবে। যদি রেপোতে প্রচুর ডিরেক্টরি থাকে তবে + একটি সেড স্ক্রিপ্টটি টাস্কের সংক্ষিপ্ত কাজ করবে।


17

Subversion 1.7 কার্য কপি ফর্ম্যাট থেকে নতুন উত্তর । আপনার sqlite3কমান্ড লাইন ইউটিলিটি প্রয়োজন ।

আপনার ওয়ার্কিং কপির মূল ডিরেক্টরিতে এখন .svn/একটি এসকিউএল ডাটাবেস সহ একটি ফোল্ডার রয়েছে। আপনি এখানে UUIDআপনার কাজের অনুলিপি জন্য পরিচিত বর্তমান সংগ্রহশালা জিজ্ঞাসা করতে পারেন :

$ sqlite3 .svn/wc.db 'select uuid from REPOSITORY where id=1'
b6dc3e6c-5320-4549-b231-c153d86d7525

ফলস্বরূপ, পরিবর্তনগুলি এর সাথে করা UUIDযেতে পারে:

$ sqlite3 .svn/wc.db 'update REPOSITORY set uuid="1c0d1ec1-2326-0410-bef5-eb29cddfc032" where id=1'

অবশ্যই, .svn/wc.dbআপডেট ক্যোয়ারী শুরু করার আগে ফাইলটির একটি ব্যাকআপ রাখুন । আপনার সংগ্রহস্থল সত্তার আলাদা আইডি রয়েছে বা সেই টেবিলে একাধিক লাইন রয়েছে এমন প্রায় কোনও সম্ভাবনা নেই তবে আপনি অপ্রত্যাশিত ফলাফল পেয়েছেন কিনা তা পরীক্ষা করে দেখতে পারেন।


+1 একটি স্থানান্তরিত রেপোর সাথে পুরোপুরি কাজ করেছিল যা ইউইউডি
এমরো

8

এখানে একটি কমান্ড রয়েছে যা এসভিএন 1.6 এবং এর নীচে কৌশল করে:

find . -type f -name entries -exec sed -i 's/old-uuid/new-uuid/g' {} \;

প্রতিস্থাপন করুন old-uuidএবং new-uuidআসল আইডি সহ।


1
সমাধানের জন্য ধন্যবাদ। এটি স্পেসযুক্ত ডিরেক্টরিগুলির জন্য কাজ করছে না। "সন্ধান করুন। -প্রকার-এফ-নাম এন্ট্রি-এক্সেক সেড-আই এর / পুরাতন-উউইড / নতুন-উউইড / জি '{} \;" ডাবল উদ্ধৃতি ছাড়া কাজ মনে হচ্ছে।
টমি

এই থ্রেডটিকে নেক্রো করার জন্য sry এই পদ্ধতিটি আমাকে কেবল বেশ কিছু সময় সাশ্রয় করেছে .. অন্যেরা এটি চেষ্টা করে দেখার জন্য, কেবল একটি নোট যুক্ত করতে চান। ম্যাকেক্সে শেডের কিছুটা আলাদা ব্যবহার প্রয়োজন বলে মনে হচ্ছে, আপনার sed -i "" 's/old-uuid/new-uuid/' এটি বলা দরকার এবং এটি কাজ করে (কেবল অতিরিক্ত খালি ডাবল উদ্ধৃতি) ( রেফ )
কার্তিক টি

2

ইয়েভেস মার্টিনের উত্তর আমাদের পক্ষে এসভিএন ১.৮ এর সাথে প্রচুর ওয়ার্কিং কপিগুলিতে দুর্দান্ত কাজ করেছে, তবে আমাদের কাজ শেষ হয়নি যেখানে এটি কার্যকর হয়নি।

"যেখানে আইডি = 1" ছাড়াই ইয়ভেসের কমান্ড চালানো আমাদের পক্ষে সব ক্ষেত্রেই কাজ করেছিল:

$ sqlite3 .svn/wc.db 'update REPOSITORY set uuid="1c0d1ec1-2326-0410-bef5-eb29cddfc032"'

কেন এমনটি ঘটেছিল তা তদন্ত করে, আমি জানতে পেরেছিলাম যে रिपেসিটারি স্থানান্তরিত করার সময় একাধিক ইউআইডিগুলি সংরক্ষণ করা হয়, ইয়েভেসের অন্তর্দৃষ্টির বিপরীতে যে এটি কখনই ঘটে না।

নতুন সংগ্রহস্থল রুট এবং তার ইউআইডি দিয়ে বর্ধিত আইডি সঞ্চয় করে বিদ্যমান একটিকে আপডেট করার পরিবর্তে রিপোজিটরি সারণিতে একটি নতুন এন্ট্রি যুক্ত করা হয়। সুতরাং যে কেসগুলি সঠিকভাবে কাজ করতে ব্যর্থ হয়েছিল সেগুলি হ'ল পূর্বে ইতিমধ্যে স্থানান্তরিত ওয়ার্কিং কপিগুলি: কমান্ডটি কাজ করতে উপস্থিত হবে, তবে কেবল প্রাথমিক ইউআইডি পরিবর্তিত হয়েছিল, বর্তমানে ব্যবহৃত হচ্ছে না।

এই কমান্ডের সাহায্যে একটি ওয়ার্কিং কপিতে সঞ্চিত শিকড় এবং ইউআইডিগুলির তালিকা পরীক্ষা করতে পারেন:

$ sqlite3 .svn/wc.db 'select id,uuid,root from REPOSITORY'

আমি শেষ পর্যন্ত নোট করব যে আমাকে উইন্ডোজ কমান্ড লাইন / ব্যাচ ফাইলগুলির জন্য বিভিন্ন সেট উক্তি ব্যবহার করতে হয়েছিল, নিম্নরূপ:

> sqlite3.exe .svn\wc.db "update REPOSITORY set uuid='1c0d1ec1-2326-0410-bef5-eb29cddfc032'"

কাজের কপির স্থানান্তরিত হয়ে যাওয়ার পরে বিশদগুলির জন্য ধন্যবাদ, আমি এই আচরণ সম্পর্কে অবগত ছিলাম না
ইয়ভেস মার্টিন

1

এসভিএন লাল-বিনের বইয়ের " পরিচালনার সংগ্রহের ইউআইডিগুলি " বিভাগে আপনার সন্ধানের উত্তর থাকতে পারে।


এই বিভাগটি রিপোজিটরি ইউইউডিগুলি সম্পর্কে কথা বলছে, ইউপিউইডের কপির জন্য কাজ করছে না।
আইওয়ান

@ আইওন: section বিভাগটি থেকে উদ্ধৃতি দেওয়া: লোকেরা সাবভার্সনের সংস্করণ 1.5 এর আগে ব্যবহার করে, এই কাজগুলি কিছুটা জটিল। আপনি স্পষ্টতই একটি সংগ্রহস্থল ডাম্প ফাইল স্টাবটি পাইপ করে একটি স্পষ্টতই একটি সংগ্রহস্থলের ইউআইডিউড সেট করতে পারেন যা স্নানাডমিন লোডের মাধ্যমে নতুন ইউআইডি স্পেসিফিকেশন বহন করে --for-uuid REPOS-PATH - এটি আপনার যা প্রয়োজন তা নয়?
ইয়াসৌসার

1
আবার, না, আমি সংগ্রহশালার ইউআইডি গুলোর কথা বলছি না , বরং ইউপিউইডের অনুলিপি ব্যবহার করছি ; ওয়ার্কিং কপিগুলি চেকআউট হিসাবে একই।
ইওয়ান

আপনি রেপোর [নতুন / বিদ্যমান] স্থানে ওয়ার্কিং কপি আপডেট না করে বা এসএনএন স্যুইচ-ইন করে সার্ভারের রেপোতে ওয়ার্কিং কপি ইউআইডি পরিবর্তন করতে পারবেন না।
ইয়াসৌসার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.