আমি রেপো আনার পরে গিটার-এসএনএনকে কীভাবে বলবো যে একটি দূরবর্তী শাখা তৈরি হয়েছিল?


193

আমি git-svnআমার সংস্থার কেন্দ্রীয় সাবভার্সিয়ন সংগ্রহস্থলের বিরুদ্ধে কাজ করতে ব্যবহার করছি । আমরা সম্প্রতি কেন্দ্রীয় রেপোতে একটি নতুন বৈশিষ্ট্য শাখা তৈরি করেছি।

আমি গিটকে এটি সম্পর্কে কীভাবে বলব? আমি যখন চালনা git branch -rকরি তখনই আমি কেবল fetchআমার গিট রেপো শুরু করার জন্য সাবভার্সন রেপোর বিরুদ্ধে দৌড়ালে আমি যে শাখাগুলি উপস্থিত ছিল তা কেবল দেখতে পাব ?


এখান থেকে উত্তরগুলি: স্ট্যাকওভারফ্লো.com / প্রশ্নগুলি / 13376917/… এছাড়াও দরকারী হতে পারে।
টমাসজ গ্যান্ডোর

উত্তর:


294

আপনি ম্যানুয়ালি দূরবর্তী শাখা যোগ করতে পারেন,

git config --add svn-remote.newbranch.url https://svn/path_to_newbranch/
git config --add svn-remote.newbranch.fetch :refs/remotes/newbranch
git svn fetch newbranch [-r<rev>]
git checkout -b local-newbranch -t newbranch
git svn rebase newbranch

3
কেবলমাত্র এই লিঙ্কটি নথিগুলিতে
এসএফএফ

1
.Git / কনফিগারেশন থেকে একক / একাধিক সংগ্রহস্থল থেকে দূরবর্তী শাখাগুলি কীভাবে কনফিগার করা যায় তা বোঝা বেশ সহজ।
মিকেল লেপিস্টö

6
আমি যদি আটবারের মতো এটি উত্সাহ দিতে পারতাম তবে আমি করতাম। অবশেষে, কোনও মানহীন লোকেশনে যুক্ত হওয়া একটি এসএনএন শাখা যুক্ত করার উপায়!
টিম কেটিং

7
আমি fatal: Cannot setup tracking information; starting point 'newbranch' is not a branch.গিট চেকআউট ধাপে পেতে ।
phpguru

17
@ phpguru -t বিকল্পের পতাকাটি সরানোর চেষ্টা করুন যাতে এটি 'গিট চেকআউট-বি স্থানীয়-নতুন ব্র্যাঞ্চ নিউ ব্র্যাঞ্চ' হয়ে যায় রিমোটের উপসর্গটিকে নতুন ব্র্যাঙ্কে অন্তর্ভুক্ত করতে ভুলবেন না (প্রাক্তন উত্স / নিউ ব্র্যাঙ্ক)।
mj1531

96

আপনি যদি সমস্ত দূরবর্তী এসএনএন শাখাগুলি ট্র্যাক করতে চান তবে সমাধানটি এতটা সহজ:

git svn fetch

এটি এমন সমস্ত প্রত্যন্ত শাখাগুলি আনবে যা এখনও আনা হয়নি।

অতিরিক্ত টিপ: আপনি যদি প্রথমে কেবল ট্রাঙ্কটি পরীক্ষা করে দেখে থাকেন এবং পরে আপনি সমস্ত শাখাগুলি ট্র্যাক করতে চান তবে তার .git/configমতো দেখতে সম্পাদনা করুন এবং পুনরায় চালনা করুন git svn fetch:

[svn-remote "svn"]
        url = https://svn/path_to_repo_root/
        fetch = path_to_trunk:refs/remotes/git-svn
        branches = path_to_branches/*:refs/remotes/*

মূল পয়েন্টগুলি urlহ'ল সংগ্রহস্থলটির মূলের দিকে নির্দেশ করা উচিত, এবং যে পাথগুলি সংজ্ঞায়িত করা হয়েছে fetchএবং তার সাথে সম্পর্কিত branchesহওয়া উচিত url

আপনি যদি সকলের পরিবর্তে কেবল নির্দিষ্ট শাখাগুলি পেতে চান তবে একটি চমৎকার উদাহরণ রয়েছে git svn --help:

[svn-remote "huge-project"]
        url = http://server.org/svn
        fetch = trunk/src:refs/remotes/trunk
        branches = branches/{red,green}/src:refs/remotes/branches/*
        tags = tags/{1.0,2.0}/src:refs/remotes/tags/*

এর পুরানো সংস্করণগুলির সাথে git-svn, একবার আপনি এর মতো শাখা নির্দিষ্ট করে দেওয়ার পরে আপনি নতুন শাখাগুলি পেতে সক্ষম হতে পারবেন না git svn fetch। একটি কর্মক্ষেত্র আরও fetchলাইন যুক্ত করছে, এর মতো:

[svn-remote "huge-project"]
        url = http://server.org/svn
        fetch = trunk/src:refs/remotes/trunk
        fetch = branches/blue:refs/remotes/branches/blue
        fetch = branches/yellow:refs/remotes/branches/yellow
        branches = branches/{red,green}/src:refs/remotes/branches/*

@AndyEstes দ্বারা অন্য কাজ: নতুন সুনির্দিষ্ট কোন শাখা বা ট্যাগ তৈরির আগে সম্পাদনা করুন .git/svn/.metadataএবং এর সংশোধন branches-maxRevবা তার tags-maxRevসংশোধন করুন। একবার এটি হয়ে গেলে, git svn fetchনতুন এসএনএন রিমোট শাখা ট্র্যাক করতে চালান ।


1
আপনি যদি এই সেটিংগুলি সেট করার আগে আপনি যদি ইতিমধ্যে সংশোধনটি এসএনএন ব্রাঞ্চিং করে থাকেন তবে আপনি গিট এসএনএন পুনরায় সেট করতে চাইতে পারেন।
কেসিএম 1700

3
সম্পাদনা .git/svn/.metadataখুব সহায়ক ছিল! আমি আমার অতিরিক্ত শাখা যুক্ত করছিলাম .git/config, যা গ্রহণ করা git svn fetchহয়নি - কারণ মেটাডেটা সংশোধন নম্বরটি "অনেক এগিয়ে" ছিল। একটি ক্ষেত্রে, শুধুমাত্র একটি শাখা থেকে শেষ প্রতিশ্রুতি আনা হয়েছিল। আমি ম্যানুয়ালি ত্রুটিযুক্ত শাখা থেকে মুক্তি পেয়েছি (নাম পরিবর্তন .git/svn/refs/remotes/svn/qa/XYZকরে .git/svn/refs/remotes/svn/qa/XYZ~, এর অস্তিত্বটি নামিয়ে আনে .git/packed-refs, ইত্যাদি) ... মেটাডেটার জন্য একটি "পূর্ববর্তী" সংশোধন নম্বরটি বেছে নিয়েছে ... git svn fetchঅবশেষে একটি সম্পূর্ণ ইতিহাস ডাব্লু / সঠিক, সংযুক্ত গ্রাফ পাওয়ার জন্য ছুটে এসেছিল ।
স্টারলোক

8
এই উত্তর স্বীকার করা উচিত! @ জ্যানোস, আপনি আমাকে কেবল কয়েক ঘন্টা মাথা ব্যথা বাঁচিয়েছেন! আপনি যদি কখনও ভারতে আসেন, আমি আপনাকে বিয়ারের জন্য বের করব!
রূপেশ শেনয়

1
বা: git svn fetch --all
কেনারব

1
এই উত্তরটি আশ্চর্যজনক, কারণ এটি সম্পর্কে প্রায় 7 টি প্রশ্নের উত্তর আমার কোনও উত্তর পাওয়া যায়নি এবং এটি 6 পৃষ্ঠার বিবরণ না লিখে এটি করে।
দ্রোজ

53

এটি আমার কেবল প্রয়োজন ছিল প্রদর্শিত হয় git svn fetch; কোনওভাবে আমি নিজেকে বুঝিয়েছি যে কেবল পরিবর্তনের পরিবর্তে পুরো রেপো আনবে।


7
@ মিতজাক কেন এটি সঠিক উত্তর নয়, যদি এর সমাধান হয়? আমি প্রতিক্রিয়াটির সূক্ষ্মতা বুঝতে পারি না।
রোলস

'একটি সমাধান' সম্ভবত 'সমাধান' নয়
এসএফ

1
@ রোলস: আমি নিশ্চিত মিটজাক এর অর্থ এটি আপনার সমস্যার সমাধান তবে আপনি যে প্রশ্নের উত্তর চেয়েছিলেন তার উত্তর নয়। (কারণ আপনি ভুল প্রশ্ন জিজ্ঞাসা করেছেন; আপনি যখন সমস্যাটির ভুল ব্যাখ্যা করেছিলেন তখন))
মাইক নেলসন

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

3
ক্লোনটির পরে যখন শাখাটি তৈরি করা হয়েছিল এটি কাজ করে, আমি সব সময় এটি করি।
টিম গৌটিয়ার

15

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

এর সমাধানটি ছিল:

  1. শাখাটি তৈরি হওয়ার আগে ট্রাঙ্কে ঘটে যাওয়া সর্বশেষ কমিটের SHA1 সন্ধান করুন।
  2. নতুন শাখায় প্রথম প্রতিশ্রুতিবদ্ধতার SHA1 সন্ধান করুন (বার্তাটি সম্ভবত "তৈরি নতুন শাখা, ট্রাঙ্ক @ 12345 থেকে অনুলিপি করা হয়েছে" বা কিছু)
  3. git diff-tree <sha1 from step 1> <sha1 from step 2>- কোন আউটপুট থাকা উচিত। যদি আউটপুট থাকে তবে আপনি ভুল কমিটগুলি নির্বাচন করেছেন।
  4. git checkout local-newbranchতারপর git rebase <sha1 from step 1>। এটি local-newbranchনতুন গাছের উপরে পুনর্বারম্ভ করবে তবে remotes/newbranchএখনও সংযোগ বিচ্ছিন্ন হবে।
  5. ফাইলটিতে যান এবং এটি .git/refs/remotes/newbranchসম্পাদনা করুন পুরানো প্রতিশ্রুতির সাথে সামঞ্জস্য করা নতুন প্রতিশ্রুতি (প্রত্যাবর্তনের উপর newbranch) এর সম্পূর্ণ SHA1 ধারণ করতে এটি সম্পাদনা করুন । (অথবা হতে পারে ব্যবহার করুন git-update-ref refs/remotes/newbranch <new-SHA>। আপনাকে ধন্যবাদ ধন্যবাদ।)
  6. পরের বার আপনি যখন git svn dcommitথেকে newbranch, আপনি কিছু লগ আপডেট এটি সম্পর্কে বার্তা একটি গুচ্ছ পাবেন। এটি আমার মনে হয় স্বাভাবিক।

gitk --allআপনি কী করছেন তা ট্র্যাক করার জন্য আমি পুরো সময় খোলা রাখার এবং প্রায়শই এটি সতেজ করার পরামর্শ দিই । আমি এখনও গিট এবং গিট এসএনএন-তে নতুন ধরণের আছি তাই দয়া করে এই পদ্ধতিতে উন্নতি করার পরামর্শ দিন।


2
ধন্যবাদ, এটি দরকারী মনে হচ্ছে। প্রায় ৫. সম্ভবত 'গিট-আপডেট-রেফ / রিমোটস / নিউ ব্র্যাঙ্ক <নতুন-শাখা>' নিরাপদ বিকল্প।
ইনজার

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

1
vjangus সমাধান সর্বদা ট্রাঙ্ক থেকে সংযোগ বিচ্ছিন্ন নতুন শাখা তৈরি করে। আমি ধরে নিই যে এসভিএন নিজেই কীভাবে প্রকৃত বিষয়বস্তু অনুলিপি করা যায় সে সম্পর্কে কোনও ধারণা নেই of
বোগদান.মুষ্টিয়াটা

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

7

ভাইজানগাসের উত্তরের সরলকরণ:

আপনি যদি এসভিএন-তে স্ট্যান্ডার্ড লেআউটটি ব্যবহার করে থাকেন এবং সাধারণ এসএনএন আরম্ভ করে থাকেন, গিট-এসএনএন আপনার জন্য কনফিগার স্টাফটি করবে। শুধু:

  1. এসভিএন-তে শাখা-অনুলিপি সংশোধন সন্ধান করুন
  2. গিট-এসএনএন দিয়ে পুনর্বিবেচনাটি আনুন
  3. নতুন স্থানীয় শাখা ট্র্যাকিং রিমোট তৈরি করুন

একটি উদাহরণ. এসভিএন ইউআরএল svn+ssh://gil@svn.myplace.com/repo। আমি খুঁজছি এসভিএন শাখা newbranch। লোকাল গিট শাখা (ট্র্যাকিং রিমোট newbranch) হবে git-newbranch

পদক্ষেপ 1: শাখা-অনুলিপি সংশোধন সন্ধান করুন

    # এসএনএন লগ - স্টপ-অন-অনুলিপি এসএনএন + এসএসএস: //gil@svn.myplace.com/repo/branches/newbranch | লেজ -4
    r7802 | কেউ | 2014-03-21 18:54:58 +0000 (শুক্র, 21 মার্চ 2014) | 1 লাইন

    নিউ ব্র্যাঞ্চে হেডকে শাখা করা হচ্ছে
    -------------------------------------------------- ----------------------

সুতরাং এসভিএন এর শাখা পয়েন্টটি পুনর্বিবেচনা 7802।

পদক্ষেপ 2: পুনর্বিবেচনাটি আনুন

    # গিট এসএনএন আনুন -7802
    সম্ভাব্য শাখার পয়েন্টটি পাওয়া গেছে: এসএনএন + এসএসএস: //gil@svn.myplays.com/repo/trunk => এসএনএন + এসএসএস: //gil@svn.myplace.com/repo/branches/newbranch, 7801
    পাওয়া শাখা পিতা: (রেফস / রিমোটস / ট্রাঙ্ক) 8dcf3c5793ff1a8a79dc94d268c91c2bf388894a
    Do_switch সহ পিতামাতার অনুসরণ করছেন
    সফলভাবে পিতামাতাকে অনুসরণ করেছে
    r7802 = 9bbd4194041675ca5c9c6f3917e05ca5654a8a1e (রেফার্স / রিমোট / নিউ ব্র্যাঞ্চ)

গিট-এসএনএন সমস্ত কাজ করেছে এবং এখন দূরবর্তী সম্পর্কে জানে:

    # গিট শো-রেফ | গ্রেপ নিউব্র্যাঞ্চ
    2df23af4733f36f5ad3c14cc1fa582ceeb3edb5c রেফ / রিমোটস / নিউ ব্র্যাঞ্চ

পদক্ষেপ 3: রিমোটটিকে ট্র্যাক করে আপনার নতুন স্থানীয় শাখা তৈরি করুন:

    # গিট চেকআউট-বি গিট-নিউব্র্যাঞ্চ -অনু নিউ ব্র্যাঞ্চ
    ফাইলগুলি পরীক্ষা করা হচ্ছে: 100% (413/413) হয়ে গেছে।
    স্থানীয় রেফ / রেফোটস / রিমোট / নিউব্র্যাঞ্চ ট্র্যাক করতে ব্রাঞ্চ গিট-নিউব্র্যাঞ্চ সেট আপ করা হয়েছে।
    একটি নতুন শাখা 'গিট-নিউব্র্যাঞ্চ' এ স্যুইচ করা হয়েছে

এটি অনুসরণ করে অবশেষে আমাকে বুঝতে দেয় ( show-refঅমূল্য)! দূরবর্তী শাখাগুলি ভুলভাবে উল্লেখ করার জন্য আটকে থাকা যে কোনও ব্যক্তির জন্য, আপনি সেগুলি মুছতে পারেন (আমাকে করতে হবে git branch -d newbranchএবং তারপরে জোর করে রেফ ডিরটি সরিয়ে ফেলতে হবে .git/svn/refs/remotes/newbranch) এবং তারপরে দ্বিতীয় ধাপে (উপরে) শুরু করতে পারেন।
tutuDajuju

5

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

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

অর্থাত

trunk
branches
  -> branch1
  -> sub-dir1
    -> branch2
    -> branch3
  -> sub-dir2
    -> branch4
    -> sub-dir3
      -> branchX 
<... hundreds more ...>

এবং আপনি কেবল আপনার গিট সংগ্রহস্থলটিতে অন্তর্ভুক্ত করার জন্য কয়েকটি শাখা বেছে নিতে চান।

আপনি প্রথমে কোনও অতিরিক্ত শাখা ছাড়াই কেবল ট্রাঙ্ক দিয়ে আপনার সংগ্রহস্থলটি শুরু করতে পারেন:

git svn clone -r 10000:HEAD https://svn.com/MyRepo myrepo --prefix=svn/ --trunk=trunk 

এর পরে আপনার নিম্নলিখিত কনফিগারেশনটি দেখতে হবে:

localhost: elhigu$ git config --get-regexp "svn-remote."
svn-remote.svn.url https://svn.com/MyRepo
svn-remote.svn.fetch trunk:refs/remotes/svn/trunk

যখনই আপনি মাইআরপো থেকে নতুন শাখা আনতে চান আপনি কনফিগারেশনে কেবল নতুন আনতে প্রবেশের মাধ্যমে এটি যুক্ত করতে পারেন:

git config --add svn-remote.svn.fetch branches/sub-dir2/branch4:refs/remotes/svn/branches/sub-dir2/branch4

অথবা আপনি .git / কনফিগারেশনে একই কনফিগারেশনটি সম্পাদনা করতে পারেন

নতুন শাখাগুলি কনফিগারেশনে যুক্ত করার পরে এটিকে চালানোর জন্য:

git svn fetch -r 10000:HEAD

[সম্পাদনা] কখনও কখনও নতুন যুক্ত শাখাগুলি আনার জন্য - সমস্ত পরামিতি সহ আনতে হবে বলে মনে হয়:

git svn fetch --all -r 10000:HEAD

4

গিট- এসএনএন কিরকগুলি মোকাবেলার পরিবর্তে আপনি সাবজিট চেষ্টা করতে পারেন ।

সাব-গিটারটিকে সাবভার্সন সংগ্রহস্থলে ইনস্টল করতে হবে। এর পরে বিশেষ গিট-এসএনএন কমান্ড ব্যবহার না করে কেউ স্ট্যান্ডার্ড গিট ওয়ার্কফ্লো ব্যবহার করতে পারে:

  1. নতুন প্রতিশ্রুতি পুশ করা:

    Git-SVN:

    $ git commit
    $ git svn rebase
    $ git svn dcommit
    

    SubGit:

    $ git commit
    $ git push
    
  2. আগত পরিবর্তন আনছে

    Git-SVN:

    $ git svn rebase
    

    SubGit:

    $ git pull [--rebase]
    
  3. একটি নতুন শাখা তৈরি করা:

    Git-SVN:

    $ git svn branch foo
    $ git checkout -b foo -t remotes/foo
    $ git commit
    $ git svn dcommit
    

    SubGit:

    $ git checkout -b foo
    $ git commit
    $ git push
    

আরও বিশদের জন্য সাবজিট ডকুমেন্টেশন দেখুন ।


1
সাবজিটের অসুবিধা রয়েছে যে এটি দুটি সংগ্রহস্থল তৈরি করে - একটি এসএনএন, এবং একটি "ছায়া" গিট সংগ্রহস্থল। বিশাল এসভিএন সংগ্রহস্থলের জন্য এটি সমস্যা হতে পারে ...
ইউডো

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

1
@ ইউডো - কোনও হার্ড ড্রাইভ তাদের রিপোজিটরি সার্ভার কিনতে আগ্রহী নয় এমন কোনও সংস্থা তাদের অগ্রাধিকারগুলি ব্যর্থ করে দিয়েছে। তবে বিশাল সংগ্রহস্থলগুলির বেশিরভাগ জায়গাগুলি তাদের সংগ্রহস্থলগুলিকে বেশ গুরুত্ব সহকারে নিয়ে থাকে, এবং সংগ্রহস্থলগুলির জন্য ডিস্ক স্পেসের প্রয়োজনীয়তা সাধারণত একটি বড় সমস্যা হয় না, এমনকি কয়েক দশকের ইতিহাস এবং কয়েক মিলিয়ন কোডের লাইন এবং কয়েক হাজার সংশোধন সহ সংস্থাগুলিও for এটি তাদের মূল বৌদ্ধিক সম্পদের সংস্থার সবচেয়ে কংক্রিট রূপ এবং ডিস্কের জায়গাটি বেশ সস্তা p এটি একটি রেড কন্ট্রোলার আপগ্রেড করার প্রয়োজন হতে পারে, তবে তবুও, উত্পাদনশীলতায় লাভ ...
বব কার্নস

@ بابি কার্নস - মূল বিষয়টি হ'ল "আকার অনুসারে" এসভিএন এবং গিট এবং উপযুক্ত নয়। এটি ডিস্ক স্টোরেজ বা অন্য কোনও প্রশ্ন নয়। তবে আপনি একটি বিশাল এসভিএন সংগ্রহস্থল নিয়ে কাজ করতে পারেন কারণ সাধারণত আপনার কেবল কয়েকটি ফাইল / প্রকল্প চেক আউট করতে হবে। তবে আপনি একটি বিশাল গিট সংগ্রহস্থল ক্লোন করতে পারবেন না - এটি কমপক্ষে মজা করে না ;-) "বিশাল" বলতে বোঝায় বেশ কয়েকটি জিগ।
উদো

2

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

এটি কেবল .git/info/graftsহ্যাশগুলির সাথে একটি লাইন যুক্ত করার ঘটনা :

<initial branch commit> <parent commit in trunk>

যেমন।

378b0ae0902f5c2d2ba230c429a47698810532e5 6c7144991381ce347d4e563e9912465700be0638

ক্রেডিট http://evan-tech.livejournal.com/255341.html

(আমি এটি একটি মন্তব্য হিসাবে যুক্ত করব, তবে আমার যথেষ্ট খ্যাতি নেই))


0

আপনি যদি বৈধ বিন্যাসের সাহায্যে পরীক্ষা না করেন, তবে আপনি কোনও দূরবর্তী শাখাটি চেকআউট করতে পারবেন না।

এই আমি কি কি:

git svn init -s <svn path with no trunk> local_repo
cd local_repo
git svn fetch 
## wait

এর পরে, আপনি একটি দূরবর্তী শাখায় স্যুইচ করতে পারেন:

git checkout --track -b branch_name branch_name

তারপরে আপনাকে স্বয়ংক্রিয়ভাবে আপনার শাখায় স্যুইচ করা হবে।

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