গিটে যাওয়ার সময় বৃহত এসএনএন ইতিহাস সম্পর্কে কী করবেন?


23

সম্পাদনা করুন: অনুরূপ কিছু প্রশ্নের মতো নয় যেমন গিট বা /programming/540535/managing-large-binary-files-with-git- এ একাধিক-জিবি এসভিএন রেপো স্থানান্তরিত করা আমার দৃশ্যে বেশ কয়েকটি সাবপ্রজেক্ট জড়িত না সহজেই গিট সাবমোডিয়ালগুলিতে রূপান্তরিত হতে পারে, না গিট-এনেক্সের জন্য বেশ উপযুক্ত কয়েকটি বাইনারি ফাইলও উপযুক্ত। এটি একটি একক সংগ্রহস্থল যেখানে বাইনারিগুলি টেস্ট স্যুট যা দৃ which়ভাবে একই সংশোধনের মূল উত্স কোডের সাথে মিলিত হয়েছিল, যেমন তারা গ্রাফিক্সের মতো সময় সম্পদ সংকলন করে থাকে like

আমি একটি পুরানো মাঝারি / বড় আকারের (50 ব্যবহারকারী, 60 কে রিভিশন, 80 জিবি ইতিহাস, 2 জিবি ওয়ার্কিং কপি) এসএনএন থেকে কোড সংগ্রহস্থল স্যুইচিংয়ের তদন্ত করছি। ব্যবহারকারীর সংখ্যা বাড়ার সাথে সাথে ট্রাঙ্কে প্রচুর মন্থর রয়েছে এবং কোডগুলি পর্যালোচনা করতে কঠোর হবার কারণে বৈশিষ্ট্যগুলি প্রায়শই একাধিক কমিটিতে ছড়িয়ে পড়ে। এছাড়াও শাখা ছাড়াই "গেট" খারাপ কোড আউট করার কোনও উপায় নেই, পর্যালোচনাগুলি কেবল ট্রাঙ্কে প্রতিশ্রুতিবদ্ধ হওয়ার পরেই করা যেতে পারে । আমি বিকল্পগুলি তদন্ত করছি। আমি আশা করছিলাম যে আমরা গিটে যেতে পারি, তবে আমার কিছু সমস্যা হচ্ছে।

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

গিটের বিতরণ প্রকৃতি হ'ল সত্যই এটি গ্রহণ করতে আমাকে বাধা দিচ্ছে। আমি বিতরণ সম্পর্কে সত্যই পাত্তা দিই না, আমি কেবল সস্তা শাখা এবং শক্তিশালী মার্জ বৈশিষ্ট্যগুলি চাই। আমি যেমন ধরে নিচ্ছি যে গিট ব্যবহারকারীরা 99.9% ব্যবহার করেন, আমরা একটি আশীর্বাদযুক্ত, খালি কেন্দ্রীয় সঞ্চয়স্থান ব্যবহার করব ory

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

  • বড় যে আপনি অনেক বাইনারি ফাইল ধারণকারী Repos সঙ্গে Git ব্যবহার করার জন্য একটি ভাল অভ্যাস কি না ইতিহাস চাও? সর্বাধিক সেরা অনুশীলন এবং টিউটোরিয়ালগুলি এই কেসটিকে এড়িয়ে চলেছে বলে মনে হচ্ছে। তারা কয়েকটি বিশাল বাইনারিগুলির সমস্যা সমাধান করে, বা বাইনারিগুলি পুরোপুরি বাদ দেওয়ার প্রস্তাব দেয়।
  • অগভীর ক্লোনিং কি সাধারণ অপারেশন হিসাবে ব্যবহারযোগ্য বা এটি একটি "হ্যাক"?
  • কোডের জন্য সাবমোডিয়ালগুলি কীভাবে ব্যবহার করা যেতে পারে যেখানে আপনার প্রধান উত্সের পুনর্বিবেচনা এবং সাবমডিউল পুনর্বিবেচনার (যেমন কম্পাইল টাইম বাইনারি নির্ভরতা, বা একটি ইউনিট পরীক্ষা স্যুট) মধ্যে একটি ঘনিষ্ঠ নির্ভরতা রয়েছে?
  • গিট সংগ্রহস্থলের (প্রাঙ্গনে) কত "বড়"? আমরা যদি এটি 4 জিবি তে নামতে পারি তবে আমাদের কী সুইচিং এড়ানো উচিত? 2GB?


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


পারফোর্স গিটের চেয়ে আরও ভাল বিকল্প হতে পারে, কারণ এটি প্রচুর বড় বাইনারি ফাইলগুলি মোকাবেলার জন্য ডিজাইন করা হয়েছে, তাই এটি অনেক গেম ডেভেলপারদের দ্বারা ব্যবহৃত হয়। প্লাস্টিকসিমিটিও দেখার মতো।
আয়ান

কেবল একপাশে: গিট সাবমোডিয়ুলগুলি যদি আপনি পারেন তবে এড়িয়ে চলুন, যেহেতু তারা বিল্ড সিস্টেমকে অতি-জটিল করে তোলে (যা ইতিমধ্যে আপনার ক্ষেত্রে জটিল)।
ইগোরগানাপলস্কি

উত্তর:


10

বাহ, এটি একটি দীর্ঘ প্রশ্ন (এবং একটি জটিল সমস্যা)। আমি এটি চেষ্টা করার চেষ্টা করব।

আমি নিশ্চিত নই যে গিট ব্যবহার করার সময় প্রত্যেক ব্যবহারকারীর কেন পুরো স্থানীয় ইতিহাস থাকতে হবে?

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

বৃহত সংগ্রহস্থল আকারের বৃহত্তম কারণ হ'ল পরীক্ষার জন্য প্রচুর বাইনারি ডকুমেন্ট রয়েছে। এই ফাইলগুলি .5mb এবং 30mb এর মধ্যে পরিবর্তিত হয় এবং শত শত রয়েছে। তাদেরও বেশ কিছু পরিবর্তন এসেছে।

এটিই আমি প্রথমে চিন্তা করব point উত্স নিয়ন্ত্রণে নিয়মিতভাবে বাইনারি ফাইলগুলি পরিবর্তন করা আমার কাছে সমস্যাযুক্ত বলে মনে হচ্ছে (এমনকি এসভিএন সহ)। আপনি কি আলাদা পদ্ধতির ব্যবহার করতে পারবেন না? ধারনা:

  • উত্স কোডের বিপরীতে, একটি 3 এমবি বাইনারি ফাইল সম্ভবত হাতে লেখা নেই। যদি কোনও সরঞ্জাম / প্রক্রিয়া এটিকে উত্পন্ন করে তবে ডেটা সংরক্ষণের পরিবর্তে এটি আপনার বিল্ডে সংহত করার কথা বিবেচনা করুন।

  • যদি এটি ব্যবহারিক না হয় তবে বাইনারি ফাইলগুলি সাধারণত একটি আর্টিফ্যাক্ট রিপোজিটরিতে (যেমন মেভেন ও কো। হতে পারে এটি আপনার জন্য একটি বিকল্প।

আমি সাবমডিউলগুলি, গিট-অ্যানেক্স ইত্যাদি দেখেছি, তবে সাবমডিউলে পরীক্ষাগুলি করা ভুল অনুভব করে, যেমন আপনি সম্পূর্ণ ইতিহাস চান এমন অনেকগুলি ফাইলের সংযুক্তিও রয়েছে।

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

আপনি কি ভুল বুঝতে পেরেছেন যে গিট-এনেক্স কীভাবে কাজ করে? git-annex এটি পরিচালনা করে এমন সমস্ত ফাইলের পুরো ইতিহাস সংরক্ষণ করে - এটি আপনাকে স্থানীয়ভাবে কোন ফাইল সামগ্রী রাখতে চান তা চয়ন করতে দেয়।

অবশেষে, আপনার প্রশ্নগুলি সম্পর্কে:

আপনি ইতিহাস চান এমন অনেক বাইনারি ফাইলযুক্ত বৃহত রেপো সহ গিট ব্যবহার করার জন্য একটি ভাল সেরা অনুশীলন কী?

আমার অভিজ্ঞতায় সাধারণত বিকল্পগুলি হ'ল:

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

অগভীর ক্লোনিং কি সাধারণ অপারেশন হিসাবে ব্যবহারযোগ্য বা এটি একটি "হ্যাক"?

এটি করণীয় হতে পারে; তবে আমি মনে করি না এটি আপনার সমস্যার সমাধান করবে:

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

গিট সংগ্রহস্থলের (প্রাঙ্গনে) কত "বড়"? আমরা যদি এটি 4 জিবি তে নামতে পারি তবে আমাদের কী সুইচিং এড়ানো উচিত? 2GB?

এটি নির্ভর করে রেপোর কাঠামোর উপর (কয়েকটি / অনেকগুলি ফাইল ইত্যাদি), আপনি কী করতে চান, আপনার কম্পিউটারগুলি কীভাবে সুন্দর করে তুলবেন এবং আপনার ধৈর্য্যের উপর :-) depends

আপনাকে দ্রুত ধারণা দেওয়ার জন্য: আমার (নবীন, তবে কম-স্পিক) ল্যাপটপে, 500 এমবি ফাইল কমিট করতে 30-60s সময় লাগে s কেবলমাত্র ইতিহাসের তালিকা (গিট লগ ইত্যাদি) বড় ফাইল দ্বারা প্রভাবিত হয় না; "গিট লগ-এস" এর মতো জিনিস যা ফাইলের বিষয়বস্তু স্ক্যান করতে হবে তা খুব ধীর - তবে, গতিটি প্রধানত I / O দ্বারা প্রাধান্য পায়, সুতরাং এটি আসলে গিটের দোষ নয়।

কয়েক গিগাবাইট সংশোধন সহ 3 জিবি রেপোতে "গিট লগ-এস" প্রায় এক মিনিট সময় নেয়।

সুতরাং আমি বলতে চাই যে বেশ কয়েকটি জিবি ঠিক আছে, যদিও এটি আদর্শ নয়। 10-20 জিবি-র বেশি সম্ভবত এটি চাপ দিচ্ছে, তবে এটি করণীয় হতে পারে - আপনাকে এটি চেষ্টা করতে হবে।


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

আমি মনে করি গিট এলএফএস বৃহত বাইনারি ফাইল স্টোরেজের জন্যও ব্যবহার করা যেতে পারে।
ইগোরগানাপলস্কি

@ আইগরজি: হ্যাঁ, গিট এলএফএস একটি বিকল্প, অন্যরাও আছেন। এটি নির্দেশ করার জন্য ধন্যবাদ, আমি আমার পোস্টটি সম্পাদনা করেছি।
স্ল্যাসকে

4

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

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

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

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


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

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

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

1
পূর্ববর্তী একটি সংস্থায় আমরা গিট ব্যবহার করতাম এবং আমি সেখানে একজনকে চিনি যে এটি নিয়মিত ব্যবহার করে তার কাজটি হারাতে পারত, তাই এটি কোনও উপায়ে সঠিক সিস্টেম নয়! না এসভিএন নয়, তবে গিট আইএমএইচও-র চেয়ে আপনার পরিস্থিতির জন্য এসভিএন আরও ভাল ফিট এবং এটি কাজ করে। অন ​​টপিক, কীভাবে গিটকে আপনার পছন্দ মতো কাজ করতে হয় ... আমি সত্যই নিশ্চিত নই যে দুঃখিত, দুঃখিত।
gbjbaanb

7
@gbjbaanb যদি কেউ গিটের সাথে কাজ হারিয়ে ফেলছে তবে তারা মারাত্মক ভুল করছে।
রাবারডাক

2

জিসিসির মেইলিং তালিকাটি দেখুন। এসিসিএন থেকে জিআইটি-তে জিসিসি সংকলকের উত্স গাছকে স্থানান্তরিত করার বিষয়ে এখনই আলোচনা করা হয়েছে (আগস্ট এবং সেপ্টেম্বর 2015), জিসিসির ইতিহাস রেখেই। যেমন দেখুন রূপান্তর যন্ত্রপাতির জন্য সংগ্রহস্থলের & Git রূপান্তর জন্য স্বীকৃতির মানদন্ড মেইল থ্রেড; আপনি রূপান্তর সম্পর্কিত সরঞ্জামগুলি এবং পদ্ধতিগুলির রেফারেন্স পাবেন (যা এটি মনে হয় ঠিক তত সহজ নয়; এত বড় কোড বেস ইতিহাসের রূপান্তরকরণের জন্য 36 ঘন্টা এবং প্রায় 64 গিগাবাইট র‌্যাম, আইআইআরসি প্রয়োজন)


আপনি কি এসভিএন থেকে গিটে স্থানান্তরিত করতে চান? কোনও সংস্করণ নিয়ন্ত্রণ সিস্টেম থেকে একটি সংকলক স্যুটে স্থানান্তরিত করা কিছুটা অদ্ভুত বলে মনে হচ্ছে। এছাড়াও, এটি উত্তরের চেয়ে কমেন্টের মতো কিছুটা পড়ছে।
বিট্রি

হ্যাঁ। টাইপোর জন্য দুঃখিত।
বেসিল স্টারিনকিভিচ

ধন্যবাদ। 36 ঘন্টা বাতাসের মতো শোনায়, কয়েক সপ্তাহের মধ্যে আমাদের রূপান্তর করা যায় ...
Anders Forsgren

2

যদি পুরো এসভিএন সংগ্রহস্থলকে গিটের আকারে রূপান্তরিত করে বিপুল সংগ্রহস্থল যা ক্লোন করা অসম্ভব, তবে আপনি আপনার সাবভার্সন সংগ্রহস্থলের কিছু অংশের জন্য ছোট গিট মিরর তৈরির জন্য সাবজিট ব্যবহার করে দেখতে পারেন ।

উদাহরণস্বরূপ, আপনি আপনার এসভিএন সংগ্রহস্থলের কিছু উপ-ডিরেক্টরি আমদানি ও সিঙ্ক করতে পারেন http://domain/repos/trunk/project/src:

subgit configure --layout auto --trunk trunk/project/src http://domain/repos project.git
edit project.git/subgit/config
edit project.git/subgit/authors.txt
subgit install project.git

সাবজিট ব্যবহার সম্পর্কে আরও তথ্যের জন্য এর ডকুমেন্টেশন পড়ুন ।

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

বিকল্পভাবে, আপনি সম্পূর্ণ এসভিএন সংগ্রহস্থল আমদানি করতে পারেন তবে সিঙ্ক থেকে বড় ফাইলগুলি বাদ দিতে পারেন:

subgit configure --layout auto --trunk trunk http://domain/repos project.git
edit project.git/subgit/config
...
[svn]
    excludePath = *.bin
    excludePath = *.iso
...
edit project.git/subgit/authors.txt
subgit install project.git

প্রতিক্রিয়াযুক্ত গিট সংগ্রহস্থলের যুক্তিসঙ্গত আকার থাকতে হবে এবং বিকাশকারীরা এখনও সাবট্রিশন সংগ্রহস্থলে তাদের পরিবর্তন জমা দেওয়ার জন্য গিট ব্যবহার করতে পারেন।

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

দাবি অস্বীকার: আমি সাবজিট বিকাশকারীদের একজন; সাবজিট বাণিজ্যিক সফটওয়্যার যা বেশ কয়েকটি বিনামূল্যে অপশন উপলব্ধ।


1

আমি নিম্নলিখিত পরিস্থিতিতে আপনার পরিস্থিতির কাছে যেতে চাই:

1) আপনার এসভিএন রেপো হিসাবে একই ডিরেক্টরিতে গিট সংগ্রহস্থল শুরু করুন। কি git initএবং git remote add originযে Git রেপো শুরু। আপনি প্রস্তুত না হওয়া পর্যন্ত আপনি এসভিএন এবং সম্পূর্ণরূপে কোনও রূপান্তরকে সম্পূর্ণ রূপান্তর না করে আলাদাভাবে গিটের প্রতিজ্ঞা চালিয়ে যেতে পারেন।

2) সক্রিয়ভাবে আপনার গিট রেপো সঙ্কুচিত করতে বিএফজি এবং ফিল্টার-শাখার সরঞ্জামগুলি সক্রিয়ভাবে ব্যবহার করুন, যেমনটি এখানে আলোচনা করা হয়েছে: https://confluence.atlassian.com/bitbucket/reduce-repository-size-321848262.html

3) আপনার বড় বাইনারিগুলির জন্য গিট-অ্যানেক্স, বা গিট এলএফএস, বা কেবল একটি বাহ্যিক স্টোরেজ সার্ভার ব্যবহার করুন (বিল্ড সময়ে শেল স্ক্রিপ্ট ব্যবহার করে ফাইলগুলি পরিবহন)।

৪) একবার আপনি আপনার গিট রেপোতে মার্জিং / শাখা কৌশল নিয়ে আরামদায়ক হয়ে ওঠেন এবং আপনার গিট রেপুর আকারে স্বাচ্ছন্দ্য বজায় রাখার পরে আপনি আপনার এসএনএন থেকে গিটে পুরো স্থানান্তর করতে পারেন।

আশাকরি এটা সাহায্য করবে.

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