সহযোগিতার জন্য সংস্করণ নিয়ন্ত্রণ (শব্দ-স্তরের ভিন্নতা সহ)?


20

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

নেই কেউ প্রস্তাব ছোট ভাগ করা দস্তাবেজ আধারগুলির ফ্রি হোস্টিং, পাঠ্য-ডকুমেন্ট-বান্ধব সংস্করণ নিয়ন্ত্রণ যে শব্দ-স্তরের diffs (সব ব্যবস্থা করতে সক্ষম সঙ্গে না লাইন ভিত্তিক)?

যদি তা না হয় তবে আমি অভিজ্ঞতার ভিত্তিতে থাকা অন্যান্য পরামর্শকে স্বাগত জানাব (আসুন অনুমান করা এড়ানো যাক, দয়া করে)।

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

সম্পর্কে এমও এ সংশ্লিষ্ট প্রশ্ন দেখতে পাবেন সহযোগিতা জন্য সরঞ্জাম এবং TeX.SE ধরে সংশ্লিষ্ট প্রশ্ন, সম্পর্কে লেটেক্ নথি জন্য সংস্করণ নিয়ন্ত্রণ এবং সংস্করণ নিয়ন্ত্রণের জন্য ক্ষীর প্যাকেজ । হোস্টিং সরবরাহকারীদের একটি বৃহত তালিকার জন্য কেবলমাত্র মূল সংস্করণ নিয়ন্ত্রণ সিস্টেমের জন্য এসভিএন হোস্টিং তুলনা পর্যালোচনা চার্টটি দেখুন ।


সম্পাদনা: টুক্স.এসই প্রশ্নে জুক্কা সুমেলার জবাব " সেরা ল্যাটেক্স-সচেতন ডিফ এবং সাবভার্সনের জন্য একত্রীকরণের সরঞ্জামগুলি " এখন পর্যন্ত সেরা পরামর্শ বলে মনে হচ্ছে, কীভাবে কোনও শব্দ স্তরে ডেল্টাসকে ব্যাখ্যা করা যায় covering তদ্ব্যতীত, জুক্কা ব্যাখ্যা করেছেন যে কীভাবে সংগ্রহশালার প্রান্তে ক্রমাগত সংস্করণগুলির মধ্যে পার্থক্যগুলি বিরোধী সনাক্তকরণ এবং পরিবর্তনগুলি মার্জ করার জন্য ব্যবহৃত ব্যবহারকারী-স্তরের পার্থক্য থেকে পৃথক। টেক্সএএসএস-এ জুক্কার উত্তর সুস্পষ্টভাবে একযোগে সম্পাদনাগুলি এবং মার্জিংকে বাদ দেয়, পরিবর্তে সম্পাদনার বিরোধগুলি এড়াতে traditionalতিহ্যগত পারমাণবিক সম্পাদনা টোকেনের উপর নির্ভর করে। আমার আসল প্রশ্নটি স্পষ্ট করা (এবং সংশোধন) করা, এমন কোনও উপায় আছে যে কোনও সংশোধন বিবাদগুলি লাইন পার্থক্যের ভিত্তিতে না করে শব্দের পার্থক্যের ভিত্তিতে সমাধান করা যায়? অন্য কথায়, করতে পারেনwdiffবা অনুরূপ সরঞ্জামগুলি সংস্করণ নিয়ন্ত্রণ সরঞ্জামগুলির দ্বন্দ্ব সনাক্তকরণ অংশে একীভূত করা যেতে পারে , একইভাবে হোয়াইটস্পেসের মধ্যে-লাইন পার্থক্য এবং পার্থক্য উপেক্ষা করা যায়?


3
আমি প্রশ্নটি বেশ বুঝি না। উদাহরণস্বরূপ, এসভিএন-এ, কোনও ব্যবহারকারীর কাছে প্রদর্শিত বিভিন্নতা ক্লায়েন্টের দ্বারা উত্পন্ন হয় এবং এটি আপনার এসভিএন ক্লায়েন্টের (এবং এর কনফিগারেশন) উপর নির্ভর করে যে আপনি শব্দ ভিত্তিক ডিফগুলি পান বা লাইন-ভিত্তিক ডিফগুলি পান। আপনার এসভিএন সংগ্রহস্থলটি হোস্ট করে এমন সংস্থা এটিকে মোটেই প্রভাবিত করে না।
Jukka Suomela

2
@ সুরেশ আপনি যদি পাঠ্য দলিল সম্পাদনা (লিখিত) করেন তবে কেউ একটি কমা পরিবর্তন করেছেন তা দেখতে প্রায়শই একটি সম্পূর্ণ লাইন স্ক্যান করতে হয় a সঠিক আচরণটি হ'ল পরিবর্তনের সর্বনিম্ন এককটি দেখানো হয়। বা, কেউ যদি লাইন ব্রেক ব্যবহার না করে তবে আচরণটি বিবেচনা করুন। তারপরে একটি একক শব্দ পরিবর্তনের ফলে আপনি এই ছোট্ট পরিবর্তনটি খুঁজে পেতে পুরো অনুচ্ছেদটিকে আলাদা করে দেখিয়ে দেবেন।
মার্ক রিটব্ল্যাট

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

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

3
এখানে বিভ্রান্তির একটি উত্স হ'ল এখানে একটি অন্তর্নির্মিত বাইনারি ডিফ অ্যালগরিদম রয়েছে (যা পৃথক বাইটের স্তরে পরিচালিত হয়) যা সার্ভিস এবং ক্লায়েন্টের মধ্যে যোগাযোগের ক্ষেত্রে এসভিএন দ্বারা ব্যবহৃত হয় এবং সার্ভার দ্বারা অভ্যন্তরীণভাবে সংগ্রহস্থল রাখার জন্য ব্যবহার করে কম্প্যাক্ট। এটি নিছক একটি অপ্টিমাইজেশন; এটি ব্যবহারকারীর কাছে দৃশ্যমান নয় এবং একই বাইনারি ডিফ আলগোরিদিম কোনও ধরণের ফাইলের জন্য প্রয়োগ করা যেতে পারে। সমস্ত ব্যবহারকারীর দ্বারা দৃশ্যমান জিনিস (মানব-পঠনযোগ্য পৃথকীকরণ, সংহতকরণ, সংঘাতের সমাধান ...) ক্লায়েন্টের পক্ষেই ঘটে।
Jukka Suomela

উত্তর:


11

ল্যাটেক্সে লিখিত কিছু ডকুমেন্টে সহযোগিতা করতে আমি গিট ব্যবহার করেছি। আপনাকে কিছু নিয়ম মেনে চলতে হবে:

  • একটি নতুন লাইনে প্রতিটি বাক্য শুরু করুন, খালি রেখা না থাকাকালীন ক্ষীর এই নিউলাইনগুলিকে উপেক্ষা করবে
  • ফর্ম্যাট করার জন্য একই কনফিগারেশন ব্যবহার করুন (ট্যাব / স্পেস / সর্বাধিক পাঠ্য প্রস্থ)
  • সেরা ফলাফলের জন্য, আপনার ভাণ্ডারে একটি .gitattributes ফাইল তৈরি করুন এবং লাইনটি যুক্ত করুন *.tex diff=tex। এটি টেক্সট সিনট্যাক্স সম্পর্কে আলাদাভাবে সচেতন হয় এবং আরও অর্থবহ আউটপুট নিয়ে যায়।

এর পরে আপনি ব্যবহার করতে পারেন git diff --color-wordsএবং gitk --color-wordsশব্দ পার্থক্য দেখতে (এছাড়াও এই নিবন্ধটি দেখুন গীত শব্দ-শব্দে diffs কিভাবে কনফিগার করতে Git সর্বদা প্রদর্শন করার Git পরিবর্তন / Git লগ ইন করুন জন্য শব্দ-পরিবর্তন অ্যালগরিদম ব্যবহার করুন)।

ম্যানুয়াল মার্জগুলি হ্রাস করতে, আমি বিভাগ এবং সাবসেকশনগুলির জন্য পৃথক ফাইলগুলি ব্যবহার করার পরামর্শ দিতে পারি (আপনার নথির আকারের উপর নির্ভর করে)।


আমি এটি আমার নিজের নথির জন্য করা বিবেচনা করব, এটি আমার বেশিরভাগ লক্ষ্য অর্জনের সহজ উপায় বলে মনে হচ্ছে। তবে সবাই এইভাবে কাজ করতে আগ্রহী নয় ...
অ্যান্ড্রেস সালামন

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

সামগ্রিকভাবে, আমি সম্মত হই যে গিটটি একটি ভাল পছন্দ। তবে কেন (উপ) বিভাগগুলির জন্য পৃথক ফাইল ম্যানুয়াল মার্জগুলির সংখ্যা হ্রাস করতে পারে? আমি আরও আশ্চর্য হয়েছি যে একটি নতুন লাইনে প্রতিটি বাক্য শুরু করা কীভাবে সহায়তা করে (কখনও কখনও বাক্যগুলি সম্পাদনার প্রক্রিয়াতে মিশ্রিত হয়)।
dd1

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

4

2
দুর্ভাগ্যক্রমে এই নথিগুলির মধ্যে "সেরা অনুশীলনগুলি" হ'ল ধরণের জিনিস যা সহকর্মীদের উপর চাপিয়ে দিতে পারে না।
আন্দ্রেস সালামন

4

আমি সত্যিই অন্যকে প্রতিধ্বনিত করতে চাই এবং পরামর্শ দিই যে আপনি বসে এবং একটি দুর্দান্ত এসভিএন কৌশল তৈরি করুন। আমি আমার সম্পূর্ণ "গবেষণা" কাঠামো হোস্ট করতে এসভিএন ব্যবহার করি:

  • জাবরফ রেফারেন্স ম্যানেজিং
  • পিডিএফ ডাউনলোড করেছেন
  • প্রবন্ধ

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

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

তারপরে, কোনও সহযোগীর সাথে কাজ করার সময় তাদের অবশ্যই স্পষ্টভাবে এসভিএন ব্যবহার করতে হবে। তবে, আবারও, শেখার ক্ষেত্রে বিনিয়োগ অর্থহীন নয়। এবং কিছু চিন্তাভাবনার মাধ্যমে, আপনি এটিও রাখতে পারেন যাতে আপনি তাদের জাবারেফ ফাইলটিতে কেবল পঠনযোগ্য অ্যাক্সেস পান (সম্ভবত এসএনএন-তে 'বাহ্যিক' সুবিধার মাধ্যমে)।

এইভাবে, কিছুটা চিন্তাভাবনা এবং কিছুটা চেষ্টা করে আপনি এমন পরিস্থিতিতে পড়তে পারেন যেখানে আপনি স্বাভাবিক হিসাবে নথিগুলি সম্পাদনা করছেন, রাতের বেলা পরিবর্তনের প্রতিশ্রুতি দিচ্ছেন, সকালে আপডেট করবেন এবং সহজেই সমস্ত দ্বন্দ্ব সমাধান করবেন res

আমি সত্যিই এটি সুপারিশ। যত বেশি লোক তাদের নিজস্ব এসভিএন স্থাপন করবে তত ভাল, কারণ এটি ভবিষ্যতে কেবল সহযোগিতার বিকল্পগুলিকেই উন্নত করবে (যদিও অবশ্যই বৈজ্ঞানিক ভাণ্ডার স্থাপনের কোনও 'স্ট্যান্ডার্ড' পদ্ধতি থাকলে এটি উপকারী হবে)।

- সম্পাদনা করুন: প্রকৃতপক্ষে, আমি এই জাতীয় প্রস্তাব এখানে লিখেছি: ল্যাটেক্স এবং এসভিএন এর সাথে বৈজ্ঞানিক সহযোগিতার কৌশল । এটি অনুরূপ সেটআপযুক্ত লোকের মধ্যে সহজ সহযোগিতা করার জন্য এসএনএন এক্সটার্নাল বৈশিষ্ট্যটি ব্যবহার করার প্রস্তাব দেয়। যদি এটির পরিবর্তনের প্রয়োজন হয় বা কেবল উপযুক্ত না হয় তবে আমাকে জানান।


4

আপনার দুর্দান্ত পোস্টটি পড়ার সময় এবং নিজেই সমাধানের সন্ধানের জন্য আমি গিটকে শব্দের স্তরে পরিবর্তনগুলি রঙিন করার বিকল্পে হোঁচট খেয়েছি । গিটক প্যারামিটারটি একটি নতুন এবং / বা অননুমোদিত বৈশিষ্ট্য বলে মনে হচ্ছে যেহেতু স্বয়ংক্রিয় সমাপ্তি এটি সরবরাহ করে না এবং গিটক ম্যান পৃষ্ঠাটি এটি তালিকাভুক্ত করে না।
আমি যে বিকল্পগুলি পেয়েছি তা এখানে রয়েছে:

gitk --word-diff=plain
gitk --word-diff=porcelain
gitk --word-diff=color

আপনি এই বিষয়ে "ডিফ - কালার-ওয়ার্ডস" গিটকে অনুসন্ধান করে বেশ কয়েকটি আলোচনা পেতে পারেন ।

সম্পাদনা:
দেখে মনে হচ্ছে এটি ...

গিটক ব্যবহার করে একটি শব্দ-স্তরে বর্ণিত পার্থক্য


1

আমি সমস্যাটি খুব ভাল করেই বুঝতে পারি। আমি ব্যবহার শুরু করেছেন কেলাইডোস্কো Git সঙ্গে diffs জন্য। এটি শুধুমাত্র ম্যাক তবে এর তুলনাগুলি ডাব্লুডিফের চেয়ে ভাল কাজ করে এবং এর একটি ইন্টারফেস এবং লাইভ আপডেটও রয়েছে।


2
আমার কাছে মনে হয় ক্যালিডোস্কোপটি কেবল একটি লাইন-ভিত্তিক ডিফ টুল যা অতিরিক্তভাবে প্রতিটি লাইনের অভ্যন্তরে পরিবর্তনগুলি হাইলাইট করে। এটি ডাব্লুডিআইফ এবং বন্ধুদের জন্য কোনও প্রতিস্থাপন নয়। ক্যালিদোস্কোপ অপঠনযোগ্য ডিফারগুলি তৈরি করে যদি আপনি, উদাহরণস্বরূপ, কেবলমাত্র পাঠ্যের একটি অনুচ্ছেদ নিয়ে যান এবং কিছু লাইন ব্রেকগুলি পরিবর্তন করেন। ডাব্লুডিফ-ভিত্তিক সরঞ্জামগুলি কেবল লাইন ব্রেকগুলির পরিবর্তনগুলি উপেক্ষা করে।
Jukka Suomela
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.