সাব্ভারশন সহ আংশিক কমিট


104

কেস দেওয়া আমি তৈরি দুটি স্বাধীন পরিবর্তন মধ্যে এক উদাহরণ: ফাইল। একটি নতুন পদ্ধতি যুক্ত করেছে এবং অন্য একটি পদ্ধতি পরিবর্তন করেছে।

আমি প্রায়শই দু'টি পরিবর্তনকে একটি প্রতিশ্রুতিবদ্ধ হিসাবে প্রতিশ্রুতি দিতে চাই না, তবে দুটি স্বতন্ত্র কমিট হিসাবে ।

একটি Git সংগ্রহস্থলের আমি ব্যবহার করেন ইন্টারেক্টিভ মোডে এর Git-অ্যাড (1) বিভক্ত করতে পিনু ছোট বেশী মধ্যে:

 git add --patch

সাবভারশন দিয়ে এটি করার সহজতম উপায় কী? (সম্ভবত একটি Elpipse প্লাগ-ইন ব্যবহার করে)

আপডেট করুন:
ইন দ্য জিনিস গীত সম্পর্কে রায়ান এটা আহ্বান: "। Tangled ওয়ার্কিং অনুলিপি সমস্যা"


আপনি কি বিশেষভাবে কমান্ড লাইনের সমাধানের জন্য অনুসন্ধান করছেন? নীচের অনেক প্রতিক্রিয়াতে কচ্ছপ এসভিএন উল্লেখ করেছে 'প্রতিশ্রুতি দেওয়ার পরে পুনরুদ্ধার', যা কেবলমাত্র কচ্ছপ-কেবল বৈশিষ্ট্য - তাই জিইউআই- এবং উইন্ডোজ ভিত্তিক।
ফ্লোরিশা

উত্তর:


35

গিট-এসএনএন দিয়ে আপনি রিমোট এসভিএন সংগ্রহস্থলের স্থানীয় জিআইটি সংগ্রহস্থল তৈরি করতে পারেন, সম্পূর্ণ জিআইটি বৈশিষ্ট্য সেট (আংশিক কমিটি সহ) ব্যবহার করে এটির সাথে কাজ করতে পারেন এবং তারপরে এটিকে সমস্ত পিছনে এসভিএন সংগ্রহস্থলে ঠেকান।

গিট-এসএনএন (1)


25
এই সমাধানে একটি বিশেষ বিড়ম্বনা আছে।
tuxayo

65

কচ্ছপ এসভিএন 1.8 এখন এটি "প্রতিশ্রুতি পরে পুনরুদ্ধার করুন" বৈশিষ্ট্যটির সাথে এটি সমর্থন করে । কমিটের পরে সমস্ত সম্পাদনা পূর্বাবস্থায় ফেলা হলে এটি আপনাকে একটি ফাইলের সম্পাদনা করতে দেয়

ডকুমেন্টেশন প্রতি:

একটি নির্দিষ্ট সমস্যার সাথে সম্পর্কিত কেবল ফাইলের সেই অংশগুলি প্রতিশ্রুতিবদ্ধ করতে:

  1. কমিট কথোপকথনে, ফাইলটিতে ডান-ক্লিক করুন, "প্রতিশ্রুতি দেওয়ার পরে পুনরুদ্ধার করুন" নির্বাচন করুন
  2. উদাহরণস্বরূপ ফাইলটি সম্পাদনা করুন কচ্ছপটি: আপনি যে পরিবর্তনগুলি করতে চান তা পূর্বাবস্থায় ফেরাবেন
  3. ফাইল সংরক্ষণ করুন
  4. ফাইল কমিট

আমি ভাবছি কিভাবে এটি কাজ করে। আমি এসভিএন 1.8 প্রকাশের নোটগুলি পরীক্ষা করে দেখেছি , তবে "প্রতিশ্রুতি দেওয়ার পরে পুনরুদ্ধার করুন" কোনটি ভিত্তিক তা চিহ্নিত করতে পারছি না।
ডেভিডএস

3
@ ডেভিডস এটি এসভিএন এর বৈশিষ্ট্য নয়। এটি কচ্ছপ এসভিএন এর একটি বৈশিষ্ট্য।
ফ্লোরিসলা

এফওয়াইআই, এসভিএন 1.8 হ'ল এপ্রিল 2018 থেকে 1.10 এর রিলিজ সহ
গ্রেগ কে

আমরা এটি এখানে ডকুমেন্টেশনেও খুঁজে পেতে পারি: কচ্ছপগুলি.এন.এন.
ডকস / রিলেজ

42

কচ্ছপ এসভিএন ব্যবহার করে এটি করেছি ।

বিল্ট ইন মার্জ ইউটিলিটি আপনাকে রিপোজিটরি সংস্করণ এবং আপনার কার্যকরী অনুলির মধ্যে পার্থক্য দেখাতে দেয়।

ভিন্ন ইউটিলিটি তৈরির ব্যাকআপ ফাংশন ব্যবহার করুন

  1. আপনার ফাইলটি এমনভাবে প্রতিশ্রুতিবদ্ধ করতে যান যেন আপনি নিজের সমস্ত পরিবর্তন করতে চলেছেন।
  2. কমিট উইন্ডোতে, ভিন্নতা দেখানোর জন্য ডাবল ক্লিক করুন।
  3. ভিন্ন সেটিংসে, মূল ফাইলটিকে ব্যাকআপ করতে বিকল্পটি ক্লিক করুন
  4. আপনি চান না এমন পরিবর্তনগুলি ডান-ক্লিক করুন এবং অন্যান্য পাঠ্য ব্লক নির্বাচন করুন ।
  5. ঠিক একবারে ডিফটি সংরক্ষণ করুন । প্রতিবার সংরক্ষণ করার পরে ব্যাকআপটি ওভাররাইট করা হবে। এজন্য আপনি কেবল একবারে সঞ্চয় করতে চান।
  6. পরিবর্তন প্রতিশ্রুতিবদ্ধ।
  7. তৈরি করা .বাক ফাইল (যাতে আপনার সমস্ত আসল পরিবর্তন আসবে) দিয়ে আসলটি ওভাররাইট করুন।
  8. আপনার ফাইল প্রতিশ্রুতিবদ্ধ।

দুটি পৃথক কমিট ব্যবহার করে আপনার এখন প্রতিশ্রুতিবদ্ধ সমস্ত পরিবর্তন করা উচিত।


1
আপনি ঠিক কীভাবে এটি করেছেন? আমি সেই কৌশলটি শিখতে আগ্রহী হব।
লাসে ভি কার্লসেন

এটি এত ঝরঝরে হবে যদি এটি কোনও কমিটের পরে .bak ফাইলগুলির সাথে স্বয়ংক্রিয়ভাবে ওভাররাইট হয়ে যায়।
বিসিএস

কচ্ছপ এসভিএন ১.৮.১ ব্যবহার করে স্টেপ -৩: ব্যাকআপ বিকল্পটি খুঁজে পেলাম না
SudhAnsu63

4
কিছু মনে করো না. 1.8 কচ্ছপগুলির জন্য কোরস্পন্ডিং লিঙ্কটি খুঁজে পেয়েছে কচ্ছপগুলি সংযুক্ত করা হয়েছে: একটি নির্দিষ্ট সমস্যার সাথে সম্পর্কিত ফাইলের কেবল সেই অঙ্গীকারগুলি সম্পাদন করতে: কমিট কথোপকথনে, ফাইলটিতে ডান ক্লিক করুন, "সম্পাদনার পরে পুনরুদ্ধার করুন" ফাইলটি সম্পাদনা করুন উদাহরণস্বরূপ
টর্টোজাইজ মার্জ

দুঃখের বিষয়, এটি কচ্ছপ সংস্করণ 1.8.5-এ উপলব্ধ বলে মনে হচ্ছে না বা "প্রতিশ্রুতি দেওয়ার পরে পুনরুদ্ধার করুন"।
কাজাকো

24

ব্যবহার করার চেষ্টা করুন svn diff > out.patchতারপর কপি out.patchফাইল out.patch.addএবংout.patch.modify

যখন আপনার একটি কার্যকারী প্যাচ ফাইল থাকে তখনই মূল ফাইলটি ব্যবহার করে ফেরান svn revert out.c

সম্পাদনা হাতে প্যাচ ফাইল যাতে তারা শুধুমাত্র ধারণ কৃপণ ব্যক্তি যোগ করে অথবা পরিবর্তন করার জন্য। patchকমান্ডটি ব্যবহার করে তাদের মূল ফাইলে প্রয়োগ করুন , সংযোজনটি যদি কাজ করে তবে পরীক্ষা করুন svn commit

out.patch.modifyপ্যাচ জন্য ধুয়ে ধুয়ে নিন ।

যদি আপনার প্রাথমিক প্রশ্নটি হিসাবে ফাইলটিতে পরিবর্তনগুলি পৃথক হয় - একটি নতুন পদ্ধতি যুক্ত করে, একটি বিদ্যমান পদ্ধতি পরিবর্তন করে - এটি কাজ করবে

এটি একটি অত্যন্ত ক্লান্তিকর সমাধান - যদিও আমি নিশ্চিত নই যে আপনার প্রতিশ্রুতি পৃথক করার কোনও কারণ আপনার উচিত।

আপনার বিরুদ্ধে এই কাজটি প্রয়োগ করতে আপনি একই উত্সের একাধিক ওয়ার্কিং কপিগুলিও পরীক্ষা করে দেখতে পারেন:

svn co http://location/repository methodAdd

svn co http://location/repository methodModify

নিশ্চিত হয়ে নিন svn upএবং পরীক্ষা নিরীক্ষা করুন যে সবকিছু ঠিক আছে।


11

V1.8 থেকে টরটোইসভিএন (উইন্ডোজ) ব্যবহার করে এটি সম্ভব।

4.4.1। কমিট ডায়লগ

যদি আপনার কাজের অনুলিপি আপ টু ডেট থাকে এবং কোনও বিরোধ নেই, আপনি আপনার পরিবর্তনগুলি প্রতিশ্রুত করতে প্রস্তুত। আপনি যে ফাইল এবং / বা ফোল্ডারগুলি প্রতিশ্রুতিবদ্ধ করতে চান তা নির্বাচন করুন, তারপরে কচ্ছপ এসভিএন → কমিট ....

<স্নিপ>

4.4.3। কেবলমাত্র ফাইলের অংশগুলি প্রতিশ্রুতিবদ্ধ

কখনও কখনও আপনি কেবল একটি ফাইলের যে পরিবর্তনগুলি করেছিলেন সেগুলি কেবলমাত্র অঙ্গীকার করতে চান। আপনি যখন কোন কিছু নিয়ে কাজ করছেন তখন সাধারণত এমন পরিস্থিতি দেখা দেয় তবে তারপরে একটি জরুরি ফিক্টটি প্রতিশ্রুতিবদ্ধ করা দরকার এবং সেই ফিক্সটি আপনি একই ফাইলটিতে কাজ করছেন তা ঘটে।

ফাইলটিতে ডান ক্লিক করুন এবং প্রসঙ্গ মেনু commit প্রতিশ্রুতি পরে পুনরুদ্ধার করুন। এটি ফাইলটি যেমন রয়েছে তেমন একটি অনুলিপি তৈরি করবে। তারপরে আপনি ফাইলটি সম্পাদনা করতে পারেন, যেমন টর্টোজাইজার্জে এবং আপনি যে সমস্ত পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে চান না তা পূর্বাবস্থায় ফেরাতে পারেন। এই পরিবর্তনগুলি সংরক্ষণ করার পরে আপনি ফাইলটি প্রতিশ্রুতিবদ্ধ করতে পারেন।

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

লিনাক্সে, আমি http://webstaff.itn.liu.se/~karlu20/div/blog/2013-05-31_SVNPartialCommit.php চেষ্টা করে দেখি । যদিও নিজে চেষ্টা করে দেখিনি।


8

আমি এটি করতাম:

  • আমার সম্পাদকটিতে (আমি ভিএম ব্যবহার করি), ফাইলটি সম্পাদনা করুন যাতে কেবলমাত্র একটির পরিবর্তন দেখা যায়
  • ফাইলটি সংরক্ষণ করুন (তবে সম্পাদকটি ছেড়ে যাবেন না)
  • পরিবর্তিত ফাইলকে এসএনএন-তে প্রতিশ্রুতিবদ্ধ করুন
  • দ্বিতীয় সেট পরিবর্তনের জন্য সম্পাদকের পর্যাপ্ত সময়ে পুনরায় উপস্থিত হওয়ার জন্য "পূর্বাবস্থায়" চাপুন
  • ফাইলটি আবার সেভ করুন
  • দ্বিতীয় সেট পরিবর্তন প্রতিশ্রুতিবদ্ধ।

এটি একটি সরল পদ্ধতি যা ধরে নিয়েছে যে পরিবর্তনের একটি সেটটি পূর্বাবস্থায় ফিরিয়ে নেওয়া সহজ। আরও জটিল পরিস্থিতির জন্য, আমি এটি নিয়ে চিন্তা না করেই উভয় পরিবর্তন ছেড়ে দেব এবং প্রতিশ্রুতিবদ্ধ।

এখন যেহেতু আমি গিট ব্যবহার করি, এটি এমনই কিছু আশা করি যে আমাকে আর কখনও করতে হবে না!


4

আমি হয় স্থানীয় ডার্কস রেপো ব্যবহার করি, বা পরিবর্তনগুলি ধীরে ধীরে মার্জ করি। মার্জ করার মাধ্যমে (ওপেনডিফ ফাইলমার্জ খুলবে, এক্সকোডের সাথে আসে এমন একত্রীকরণ প্রোগ্রাম; আপনার পছন্দসই মার্জ সরঞ্জামটি প্রতিস্থাপন করুন):

cp file file.new
svn revert file
opendiff file.new file -merge file

সম্পর্কিত পরিবর্তনগুলি মার্জ করুন, মার্জটি সংরক্ষণ করুন, মার্জ প্রোগ্রামটি ছেড়ে দিন

svn ci -m 'first hunk' file
mv file.new file
svn ci -m 'second hunk' file

যদি ফাইলে একাধিক সম্পর্কযুক্ত হুঙ্ক, ধুয়ে ফেলুন এবং পুনরায় পুনরায় করুন (তবে আপনি প্রতিশ্রুতি দেওয়ার আগে এতক্ষণ অপেক্ষা করবেন কেন ?!)

এছাড়াও, যদি আপনি গিট জানেন, আপনি স্থানীয় গিট রেপো বজায় রাখতে এবং গিট-এসএনএন ব্যবহার করতে পারেন এবং আপনার কমিটগুলি একটি এসএনএন মাস্টার সার্ভারে সিঙ্ক করতে পারেন; আমার সীমিত অভিজ্ঞতায় দুর্দান্ত কাজ করে।


9
পুনরায়: "এতক্ষণ অপেক্ষা কেন?" আপনি সারাদিন একটি বড় চুল্লী করছেন এবং বস দুপুরের খাওয়ার ঠিক আগে সামান্য ফিক্স-এই-বাগটি ফোঁটায়।
বিসিএস

4

ভিজ্যুয়াল স্টুডিওর জন্য ভিজ্যুয়ালএসভিএন চেষ্টা করে দেখুন । সর্বশেষ 6.1 রিলিজ QuickCommit বৈশিষ্ট্যটি পেশ করে। আপনি ভিজ্যুয়াল স্টুডিও সম্পাদকের নতুন প্রতিশ্রুতিবদ্ধ এই ব্লক এবং প্রতিশ্রুতিবদ্ধ নির্বাচন প্রসঙ্গ মেনু কমান্ড ব্যবহার করে কোনও ফাইলের মধ্যে আংশিকভাবে নির্বাচিত পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন ।

এখানে চিত্র বর্ণনা লিখুন


2
  1. আপনি পছন্দমতো সম্পাদক-বিভাগে বিভক্ত করতে চান এমন সমস্ত ফাইল খুলুন
  2. একটি আলাদা সরঞ্জাম সেট ব্যবহার করে (উইনে, স্পাইকের পরামর্শ (পুরানো সংস্করণ)) ব্যবহার করে দ্বিতীয় সেটটি ফিরে আসবে
  3. সমর্পণ করা
  4. আপনার পছন্দের সম্পাদক হিসাবে ফিরে যান এবং সমস্ত ফাইল সংরক্ষণ করুন

এটি স্পাইকের সম্পূর্ণ পরামর্শের চেয়ে কিছুটা ঝুঁকিপূর্ণ তবে এটি করা সহজ। এছাড়াও নিশ্চিত হয়ে নিন যে আপনি প্রথমে অন্য কিছু চেষ্টা করে দেখছেন যেহেতু কিছু সম্পাদকরা সেই ফাইলটিকে পুনরায় লোড না করে তাদের অধীনে থেকে পরিবর্তিত কোনও ফাইলকে সংরক্ষণ করতে অস্বীকার করবেন (আপনার সমস্ত পরিবর্তন হারাতে হবে)


0

আমি মনে করি ডিফ ফাইল তৈরি, রিভার্টিং ইত্যাদির চেয়ে সহজ বিকল্পটি হ'ল সংগ্রহস্থলের দুটি কপি চেক আউট করা এবং ডেল্টাওয়ালারের মতো ভিজ্যুয়াল ডিফ সরঞ্জাম ব্যবহার করা হবে এবং এক থেকে অন্যটিতে কুকুর অনুলিপি করতে হবে।

প্রথম অনুলিপিটি হ'ল আপনি যা বাস্তবে কাজ করছেন এবং দ্বিতীয়টি কেবল এই উদ্দেশ্যেই হবে। একবার আপনি প্রথমটিতে একটি টন পরিবর্তন করে ফেললে, আপনি একটি বিভাগকে দ্বিতীয়টিতে অনুলিপি করতে পারেন, এটি প্রতিশ্রুতিবদ্ধ করতে পারেন, অন্য বিভাগটি অনুলিপি করতে পারেন, প্রতিশ্রুতিবদ্ধ করতে পারেন ইত্যাদি


0
  1. ব্যাক-আপ অনুলিপি সম্পর্কিত সমস্ত পরিবর্তিত ফাইল অনুলিপি করুন।
  2. ব্যবহার করে কাজের প্যাচ তৈরি করুন svn diff
  3. ব্যবহার করে ফাইলগুলি রিভার্ট করুন svn revert
  4. আপনি যে প্যাচটি প্রতিশ্রুতিবদ্ধ করতে চান সেগুলির অংশগুলি পুনরায় প্রয়োগ করুন, হয় patchসরঞ্জামটি ব্যবহার করে , বা ম্যানুয়াল সম্পাদনা বা যা কিছু হোক।
  5. diffআপনার প্যাচ-পার্টগুলি সঠিকভাবে প্রয়োগ করেছেন তা নিশ্চিত হওয়ার জন্য আপনার ব্যাক-আপের সাথে আপনার কাজের অনুলিপিটির তুলনা করতে পরে চালান ।
  6. নির্মাণ এবং পরীক্ষা।
  7. কমিট।
  8. আপনার ব্যাক-আপ অনুলিপিগুলি আপনার সংগ্রহস্থল চেক-আউটে ফিরে যান Copy
  9. সম্পন্ন না হওয়া পর্যন্ত 2 এ পুনরাবৃত্তি করুন (1 এ!!)।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.