অপ্রয়োজনীয় এসএনএন: মার্জিনফো বৈশিষ্ট্যগুলি সরান


136

আমি যখন আমার সংগ্রহস্থলগুলিতে জিনিসগুলি মার্জ করি তখন সাবভারশন svn:mergeinfoফাইলগুলিতে প্রচুর বৈশিষ্ট্য যুক্ত করতে / পরিবর্তন করতে চায় যা আমি মার্জ করতে চাই এমন জিনিসগুলির সাথে সম্পূর্ণ সম্পর্কযুক্ত নয়।

এই আচরণ সম্পর্কে প্রশ্নগুলি এখানে স্ট্যাক ওভারফ্লোতে আগে জিজ্ঞাসা করা হয়েছিল:

উপরে বর্ণিত বিষয়গুলি থেকে আমি যা বুঝি তা থেকে দেখে মনে হচ্ছে আমার সংগ্রহস্থলের অনেকগুলি ফাইলের স্পষ্ট svn:mergeinfoবৈশিষ্ট্য রয়েছে, যখন সেগুলি না করা উচিত। পরামর্শটি হ'ল পরিমাণ হ্রাস করা এবং কেবলমাত্র সেই সম্পত্তিগুলি সম্পর্কিত ফাইল / ফোল্ডারে রাখুন।

সুতরাং এখন আমার প্রশ্ন: কীভাবে আমি সহজেই এই অপ্রয়োজনীয় বৈশিষ্ট্যগুলি সরিয়ে ফেলতে পারি? আমি টরটোইজএসভিএন ব্যবহার করছি তবে শত শত ফাইল ম্যানুয়ালি পরীক্ষা করতে / ঠিক করতে আমি নারাজ। এই অপ্রয়োজনীয় svn:mergeinfoসম্পত্তিগুলি সরানোর কোনও সহজ উপায় আছে কি ?

PS আমি সি ++ এসভিএন এপিআই কোড খুঁজছি না

উত্তর:


142

সমস্ত সাব ট্রি ট্রিভন মুছে ফেলার আরেকটি উপায় এখানে রয়েছে: মার্জিনফো বৈশিষ্ট্যগুলি তবে মূল ফোল্ডারে নয় (সঠিকভাবে কাজ করার জন্য শাখা প্রশাখার জন্য এটি প্রয়োজন)।

প্রকল্পের মূল থেকে:

svn propdel svn:mergeinfo -R
svn revert .
svn ci -m "Removed mergeinfo"

57
বা, এটি কেবল রুট dir এ করবেন না "এসএনএন প্রোপেল -আর এসএনএন: মার্জিনফো ./*"
জেরেমিওয়েয়ার

3
"এসএনএন প্রোপেল -আর এসএনএন: মার্জিনফো।
পিটার

3
আউটপুটটিকে দমন করে এটি গতি বাড়িয়ে তোলে: "এসএনএন প্রোপেল এসএনএন: মার্জিনফো -আর> নুল" (বা লিনাক্স ব্যবহার করে / দেব / নাল)
বেবিবো

2
@ জেরেমিওয়ের @ "কেবল এটি মূল শিরোনামে করবেন না" বলতে কী বোঝায়? কোথা থেকে? আপনার এই মন্তব্যে প্রচুর আপত্তি রয়েছে তবে আমি বিকল্পটি দেখছি না।
টিটি।

3
@TT। আমি মনে করি ধারণাটি হ'ল দিরের কাছে যেতে হবে যা সমস্ত গণ্ডগোল করে একীভূত করার তথ্য রয়েছে এবং সেখান থেকে এটি করা, যাতে আপনাকে রুট ডিরেক্টরিটি ফিরে না লাগাতে হবে। আপনি মূলটির মার্জিনফোতে গণ্ডগোল করতে চান না।
জেরেমিওয়েয়ার

15

সমস্ত সাবট্রি এসএনএন মুছে ফেলার একটি উপায় এখানে রয়েছে: মার্জিনফো বৈশিষ্ট্যগুলি। এটি আপনার সংগ্রহশালার মূলের মধ্যে চালান:

svn propget svn:mergeinfo --depth=infinity 
    | grep -v "^/"
    | grep -v "^\."   
    | cut -d- -f1 
    | xargs svn propdel svn:mergeinfo

সহজ অনুলিপি / আটকানোর জন্য সমস্ত এক লাইনে:

svn propget svn:mergeinfo --depth=infinity | grep -v "^/" | grep -v "^\." | cut -d- -f1 | xargs svn propdel svn:mergeinfo

এটি চালানোর আগে এটি কোন ফাইলগুলিতে প্রভাব ফেলবে তা পূর্বরূপ দেখতে, সর্বশেষ "প্রোপেলেল "টিকে" প্রস্তাবনা "তে পরিবর্তন করুন বা সর্বশেষে xargs পাইপটি সম্পূর্ণ মুছে ফেলুন।


2
ফাইলগুলিতে হাইফেনের সাথে কাজ করে: এসএনএন প্রস্তাবনা -আর এসএনএন: মার্জিনফো | grep -v "^ /" | গ্রেপ-ভি "^ \।" | "-d" -f1 কেটে দিন xargs এসএনএন প্রোপেল এসএনএন: মার্জিনফো
কাঠবিড়ালি

12

এই থ্রেড হিসাবে উল্লিখিত :

  • সর্বাধিক খালি মার্জিনফো ("ফাঁকা") ওয়ার্কিং অনুলিপিগুলিতে ওয়ার্কিং কপির অনুলিপি / মুভগুলিতে তৈরি হতে পারে যেখানে উত্স আইটেমটির স্পষ্ট মার্জিনফো নেই। আপনি যদি ১. S এসভিএন ব্যবহার না করেন তবে প্রোপডেল ব্যবহার করা সমাধান হতে পারে: 1.5% থেকে এই ডাব্লুসি-টু-ডাব্লুসি-র অনুলিপিগুলি আর গন্তব্যে খালি মার্জিনফো তৈরি করে না
  • পূর্ববর্তী এসএনএন মুভ (পুনর্নবীকরণ) পুনর্গঠন ক্রিয়াকলাপটি মূল ডিরেক্টরিতে রেখে পরিবর্তে মার্জিনফোও প্রচার করতে পারে
  • একটি সম্ভাব্য মেমরি সমস্যা রয়েছে, এটি 3393 কেস দ্বারা ট্র্যাক করা হয়েছে যা আসন্ন 1.6.2 সংস্করণে স্থির হবে এবং 1.5 এ ব্যাক-পোর্ট করা হবে

6

যেমন আমি অন্ধের সাথে আত্মবিশ্বাসী নই svn:merge-info সম্পত্তি মুছে ফেলার , তেমনি একটি ওয়ার্কিং কপির উপর বর্তমান পরিস্থিতি বিশ্লেষণ করতে এবং নন-রুট মার্জ-ইনফো বৈশিষ্ট্যগুলি থেকে যতটা সম্ভব মার্জ সংশোধনগুলি সরিয়ে আমি একটি সরঞ্জাম প্রয়োগ করেছি implemented অতিরিক্ত মানব চেক এবং নিয়ন্ত্রণের পরে, কাজের অনুলিপিতে পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ হতে পারে।

এটি এখানে: এসএনএন-ক্লিন-মার্জিনফো

এটির উন্নতি পেতে এর ব্যবহার সম্পর্কে কোনও সমস্যা জানাতে দ্বিধা করবেন না।

সাবভার্সন ১.১০ সেই কাজের জন্য নিবেদিত একটি নতুন সরঞ্জাম প্রবর্তন করে: svn-mergeinfo-normalizer


2
এই সরঞ্জামটি মার্জ-ইনফো বৈশিষ্ট্যগুলি একত্রীকরণের জন্য দুর্দান্ত, যেমন আংশিক সাব-ডাইরেক্টরি মার্জগুলির সাথে তৈরি হওয়া ধরণের যেমন বড় দলটির নিখুঁতভাবে সমন্বিত বিকাশকারীরা তৈরি করতে পারে তার চেয়ে অনেক কম। হাতিয়ারটিতে প্রতিটি শাখায় বিদ্যমান ফাইলগুলির সাথে সমস্যা রয়েছে বলে মনে হয়, আমি শাখাগুলিতে সংশোধনগুলি নির্দেশ করে এমন ফাইলগুলিতে বামে থাকা মার্জ-ইনফো বৈশিষ্ট্য পাই যা ফাইলটি কখনও অস্তিত্বহীন।
davenpcj

আমি সম্মত হই যে এটি নিখুঁত নয় ... এজন্য "মানব চেক এবং নিয়ন্ত্রণ" এখনও প্রয়োজনীয়। আপনার ক্ষেত্রে, আপনি যদি মার্জ-ইনফো বৈশিষ্ট্যগুলিতে অ প্রাসঙ্গিক সংশোধনগুলি চিহ্নিত করে থাকেন তবে আপনি এই সংশোধনগুলি বা সম্পূর্ণ এসএনএন: মার্জ-ইনফো সম্পত্তিটি কমিট করার আগে এই ফাইলগুলিতে সরাতে পারেন। উন্নতির জন্য জিজ্ঞাসা করুন গিথুব ব্যবহার করুন।
ইয়েভে মার্টিন

4

আমি জানি এটি কিছুক্ষণ হয়ে গেছে তবে আমি একই ধরণের সমস্যায় পড়েছি। আমি কচ্ছপ এসভিএন ১.6.। ব্যবহার করছি। এটি ঠিক তাই ঘটেছিল যে সম্পত্তিটি আমার ওয়ার্কিং কপির মূলে ছিল। আমি যখন মূলটিতে থাকা বৈশিষ্ট্যগুলি দেখি এবং এসভিএন: মার্জিনফোতে অপসারণ ক্লিক করি, তখন আমাকে জিজ্ঞাসা করা হয়েছিল যে আমি এটি পুনরাবৃত্তভাবে মুছে ফেলতে চাই কিনা। এটি আমার সমস্ত এসএনএন থেকে মুক্তি পেয়েছে: মার্জিনফো ককআপস।


আমি একই পরিস্থিতি ছিল। আমার জন্য কাজ করেছেন। ধন্যবাদ!
andrewd18

2

আপনি যদি নিশ্চিত হন যে আপনি মার্জিনফোর বৈশিষ্ট্যগুলিকে ভর-সরান করতে চান তবে আপনি নীচের বেস স্ক্রিপ্টটি ব্যবহার করতে পারেন।

FILES=`svn status |grep "^ M      " |sed s/" M      "// |tr '\n', ' '`
svn revert $FILES

এটি পরিবর্তিত ফাইলগুলির একটি তালিকা পেয়েছে, কেবলমাত্র পরিবর্তনের পরিবর্তে এটি ফিল্টার করে, প্রকৃত ফাইল পাথ ব্যতীত সমস্ত কিছুই সরিয়ে দেয়, এক-প্রতি-লাইন পাথকে একটি স্থানকে সীমিত তালিকাতে রূপান্তরিত করে এবং কলগুলি সেই তালিকায় ফিরে আসে।


2
থ্যাঙ্কস, তবে আপনি যেমন জানেন আমার কাছ থেকে
টরটোজ এসভিএন

ডসগুলিতে একই জিনিসটি সম্ভব হওয়া উচিত, তবে সম্ভবত এটি ক্ষতিকারক নয়।
চেজ সেয়বার্ট

1
এটি কি কেবলমাত্র বর্তমান ওয়ার্কিং ডিরেক্টরিতে পরিবর্তিত মার্জিনফো সহ ফাইলগুলি ফিরিয়ে দেয় না? যদি তা হয় তবে এটি সমস্যার সমাধান করে না: বিদ্যমান সুস্পষ্ট মার্জিনফো। তার জন্য, আপনাকে চালিত করা দরকার।
ডোমিনিক শ্যারিলিংক

2
এটি বেশ বগল - এর নামে সাদা জায়গার কোনও ফাইল নাম আছে? এর নামে গ্লোব অক্ষর? উভয় ক্ষেত্রেই খারাপ খবর। এসএনএন স্থিতি থেকে আউটপুট পার্স করার অনুমোদিত / সমর্থিত উপায়টি --xmlপতাকা এবং একটি এক্সএমএল পার্সার ব্যবহার করছে ; পাঠ্য আউটপুট ফর্ম্যাটে ফরওয়ার্ডের সামঞ্জস্যের নিশ্চয়তা না পাওয়ায় সংস্করণগুলির মধ্যে অন্য যে কোনও কিছুই পরিবর্তন করতে পারে।
চার্লস ডাফি

2

মার্জিনফো বৈশিষ্ট্যগুলি অন্ধভাবে মুছে ফেলার পরিবর্তে, "নিখোঁজ" মার্জগুলি সম্পন্ন করাও সম্ভব।

রুট ফোল্ডার থেকে মার্জিনফো সম্পত্তিটি অনুলিপি করুন এবং তারপরে যথাযথ আপেক্ষিক পাথ এবং সঠিক একই সংশোধন তালিকার জন্য শিশু ফোল্ডারে একত্রিত করুন perform (আপনি কেবলমাত্র এই তালিকা এবং চাইল্ড ফোল্ডারে থাকা একের মধ্যে পার্থক্যগুলি কেবল তালিকাভুক্ত করতে পারেন তবে এটি করার দরকার নেই))

সাধারণত এই মার্জটি কেবল মার্জিনফো বৈশিষ্ট্যগুলি পরিবর্তন করতে হবে, কোনও আসল ফাইল নয়। (যদি এটি ফাইলগুলি পরিবর্তন করে শেষ না করে তবে পূর্বের মার্জগুলির মধ্যে একটি অবশ্যই একটি আংশিক মার্জ হওয়া উচিত, যা আপনাকে যে কোনও উপায়ে সমস্যার কারণ হতে পারে))

এটি করার পরে আপনার জন্য মার্জিনফো সম্পত্তিটি মুছে ফেলা উচিত, একবার আপনি দুজনকে ঠিক মেলে। আপনার বিপরীতটিও করতে হতে পারে: কেবলমাত্র ফোল্ডারে উপস্থিত যে কোনও মার্জ সংশোধনগুলি রুটটিতে মার্জ করুন (আবার আপনি কেবল পুরো তালিকাটি পেস্ট করতে পারেন এবং এসভিএনকে আপনার জন্য পার্থক্যগুলি সন্ধান করতে পারেন)।


1

ডিরেক্টরি কাঠামোর পরিবর্তন করতে, এটি হবে (নন-ডস 'কেবল' সন্ধান করুন):

find . -path "*/.svn" -prune -or -exec svn propdel svn:mergeinfo '{}' \;

1.5 সার্ভারের সাথে সংযুক্ত 1.6.12 ক্লায়েন্ট চালাচ্ছি, আমারও একই সমস্যা রয়েছে; সেখানে হয় প্রকল্পে নিজস্ব SVN প্রয়োজন একটি সাব: mergeinfo কিন্তু ( "SVN: উপেক্ষা করা *" সঙ্গে ./var নিচে 5 ডিরেক্টরি সহ) 121 ধরনের এন্ট্রি থাকার কিছুটা অনুপযুক্ত বলে মনে হয়। সুতরাং, এটির (উদাহরণস্বরূপ পাইথন) স্ক্রিপ্টটি পাওয়া ভাল লাগবে যা স্পষ্টতই অতি ضرورتবোধের মার্জ তথ্য মুছে ফেলতে এবং অন্যান্য পার্থক্য সম্পর্কে বলতে সক্ষম ...

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