আমি কীভাবে একটি নতুন গিট সংগ্রহস্থলের সাথে ইতিহাসের সাথে একটি এসভিএন সংগ্রহস্থল স্থানান্তর করব?


1509

আমি গিট ম্যানুয়াল, এফএকিউ, গিট - এসভিএন ক্রাশ কোর্স ইত্যাদি পড়েছি এবং তারা সকলেই এই এবং এটি ব্যাখ্যা করে তবে কোথাও আপনি এর মতো সরল নির্দেশ খুঁজে পাচ্ছেন না:

এসভিএন সংগ্রহস্থল এতে: svn://myserver/path/to/svn/repos

গিট সংগ্রহস্থল এতে: git://myserver/path/to/git/repos

git-do-the-magic-svn-import-with-history \
svn://myserver/path/to/svn/repos \
git://myserver/path/to/git/repos

আমি এটি এত সহজ হবে বলে আশা করি না এবং আমি এটি একক কমান্ড হওয়ারও আশা করি না। তবে আমি আশা করি এটি কোনও ব্যাখ্যা করার চেষ্টা করবে না - কেবল এই উদাহরণটি দিয়ে কী পদক্ষেপ নিতে হবে তা বলার জন্য।


6
এটি সহজ হয়ে উঠছে, আমি কেবল এটি নিজেই সম্পন্ন করেছি এবং এসও jmoses.co/2014/03/21/moving-from-svn-to-git.html
জন মোশি

ক্যাসির উত্তর নীচে ব্যবহার করুন, তবে আপনি "এসএনএন ক্লোন ..." কমান্ডটি চালানোর আগে আপনার ইউজারআর্টেক্সট ফাইলটিতে কীভাবে অতিরিক্ত "ভিজ্যুয়াল এসভিএন সার্ভার" লাইন যুক্ত করবেন তা দেখুন ... এখানে: স্ট্যাকওভারফ্লো
ম্যাকগাইভার

1
এছাড়াও, যদি আপনার গিটহাব প্রোফাইলে "ইমেল প্রাইভেট অপশনটি চেক করা থাকে তবে এটি ব্যবহারকারীদের কাছে আপনার ইমেল ঠিকানা হিসাবে ব্যবহার করুন match টেক্সট মেলানোর জন্য your yourgituser@users.noreply.github.com, তাই আপনার আসল ইমেল ঠিকানাটি প্রদর্শিত হবে না
ম্যাকগাইভার

উত্তর:


529

ম্যাজিক:

$ git svn clone http://svn/repo/here/trunk

গিট এবং এসভিএন খুব আলাদাভাবে কাজ করে। আপনার গিট শিখতে হবে এবং আপনি যদি এসভিএন থেকে প্রবাহিত পরিবর্তনগুলি ট্র্যাক করতে চান তবে আপনার শিখতে হবে git-svngit-svn প্রধান পাতা একটি ভাল উদাহরণ অধ্যায় আছে :

$ git svn --help

139
@ ক্যাসির উত্তরটি মূল প্রশ্নের উত্তরটি আরও ভাল উত্তর দেয়।
ডগ উইলসন

3
এটি কি শাখা এবং সমস্ত কিছু রাখবে? বা শুধু ট্রাঙ্ক ক্লোন?
ইলডোসা

7
@ এলডোসা: এটি কেবল ট্রাঙ্কটি ক্লোন করবে। বিকল্পের জন্য ক্যাসির উত্তর দেখুন।
sleske

3
@ ডউগ উইলসন তবে আমি এখানে ক্যাসির কোনও উত্তর দেখতে পাচ্ছি না। এটি "লেখক তৈরি করুন" দিয়ে শুরু হওয়া 13 জন লেখকের সাথে কি নীচের উত্তর?
অ্যান্ড্রে রেজেন্টভ

67
যে কেউ কে ভাবছেন যে "কেসির উত্তর" যা প্রায় চারপাশে প্রচুর মন্তব্যে উল্লিখিত হয়েছে, এটিই এই (ক্যাসি তার নিকটিকে সিএমসিগিন্টিতে পরিবর্তন করেছেন)।
স্টিফান মনোভ

1559

users.txtগিটকে এসভিএন ব্যবহারকারীদের ম্যাপিংয়ের জন্য একটি ব্যবহারকারী ফাইল (যেমন ) তৈরি করুন :

user1 = First Last Name <email@address.com>
user2 = First Last Name <email@address.com>
...

আপনি আপনার বিদ্যমান এসভিএন সংগ্রহস্থল থেকে টেমপ্লেট তৈরি করতে এই ওয়ান-লাইনারটি ব্যবহার করতে পারেন:

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt

এসভিএন বন্ধ হয়ে যাবে যদি এটি কোনও অনুপস্থিত এসভিএন ব্যবহারকারী ফাইলে না খুঁজে পায়। তবে এর পরে আপনি ফাইলটি আপডেট করতে এবং আপনি যেখানে ছেড়ে গিয়েছিলেন সেখানে পিক-আপ করতে পারেন।

এখন সংগ্রহস্থল থেকে এসভিএন ডেটা টানুন:

git svn clone --stdlayout --no-metadata --authors-file=users.txt svn://hostname/path dest_dir-tmp

এই কমান্ডটি একটি নতুন গিট সংগ্রহস্থল তৈরি করবে dest_dir-tmpএবং এসভিএন সংগ্রহস্থলটিকে টানতে শুরু করবে। নোট করুন যে "--stdlayout" পতাকাটি বোঝায় যে আপনার কাছে সাধারণ "ট্রাঙ্ক /, শাখা /, ট্যাগ /" এসভিএন লেআউট রয়েছে। যদি আপনার লেআউট পৃথক, সাথে পরিচিত হয়ে --tags, --branches, --trunkঅপশন (সাধারণ git svn help)।

সব সাধারণ প্রোটোকল অনুমোদিত: svn://, http://, https://। ইউআরএলটি বেস ভান্ডারগুলিকে টার্গেট করা উচিত, http://svn.mycompany.com/myrepo/repository এর মতো কিছু । ইউআরএল স্ট্রিং অবশ্যই অন্তর্ভুক্ত করা উচিত নয়/trunk , /tagবা /branches

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

এছাড়াও মনে রাখবেন যে আপনি --no-metadataপতাকাটি বাদ দিলে , গিট কমিটের বার্তায় (যেমন git-svn-id: svn://svn.mycompany.com/myrepo/<branchname/trunk>@<RevisionNumber> <Repository UUID>) সম্পর্কিত এসভিএন সংশোধন সম্পর্কিত তথ্য যুক্ত করবে

যদি কোনও ব্যবহারকারীর নাম না পাওয়া যায় users.txtতবে আপনার ফাইলটি আপডেট করুন :

cd dest_dir-tmp
git svn fetch

সাবসার্শন কমিটসটি সরিয়ে না নেওয়া পর্যন্ত আপনার যদি কোনও বড় প্রকল্প হয় তবে আপনাকে শেষ বারের কমান্ডটি কয়েকবার পুনরাবৃত্তি করতে হবে:

git svn fetch

সম্পূর্ণ হয়ে গেলে গিট এসভিএনকে trunkএকটি নতুন শাখায় চেকআউট করবে । অন্য কোনও শাখা রিমোট হিসাবে সেটআপ করা হয়। আপনি অন্যান্য এসভিএন শাখা এটির সাথে দেখতে পারেন:

git branch -r

আপনি যদি অন্য সংগ্রহস্থলগুলিতে আপনার সংগ্রহস্থলে রাখতে চান তবে আপনি নিজেই প্রত্যেকের জন্য একটি স্থানীয় শাখা তৈরি করতে চান। (ট্রাঙ্ক / মাস্টার ছেড়ে যান) আপনি যদি এটি না করেন তবে শাখাগুলি চূড়ান্ত পদক্ষেপে ক্লোন করা হবে না।

git checkout -b local_branch remote_branch
# It's OK if local_branch and remote_branch are the same name

ট্যাগগুলি শাখা হিসাবে আমদানি করা হয়। গিটে ট্যাগ হিসাবে আপনাকে একটি শাখা তৈরি করতে হবে, একটি ট্যাগ তৈরি করতে হবে এবং শাখাটি মুছতে হবে delete ট্যাগ "ভি 1" দিয়ে এটি করতে:

git checkout -b tag_v1 remotes/tags/v1
git checkout master
git tag v1 tag_v1
git branch -D tag_v1

আপনার জিআইটি-এসভিএন সংগ্রহস্থলটিকে একটি পরিষ্কার গিট সংগ্রহস্থল হিসাবে ক্লোন করুন:

git clone dest_dir-tmp dest_dir
rm -rf dest_dir-tmp
cd dest_dir

দূরবর্তী শাখাগুলি থেকে আপনি যে স্থানীয় স্থানীয় শাখাগুলি তৈরি করেছিলেন কেবল সেগুলি কেবল নতুন ক্লোন করা ভাণ্ডারে রিমোট শাখা হিসাবে অনুলিপি করা হবে। (ট্রাঙ্ক / মাস্টার ছেড়ে যান) প্রতিটি শাখার জন্য আপনি রাখতে চান:

git checkout -b local_branch origin/remote_branch

অবশেষে, আপনার ক্লিন গিট সংগ্রহস্থল থেকে এমন রিমোট সরিয়ে ফেলুন যা এখন মুছে ফেলা অস্থায়ী সংগ্রহস্থলের দিকে নির্দেশ করে:

git remote rm origin

36
ইয়েলকে এই ব্লগ পোস্টটি উপরের উত্তরের জন্য দুর্দান্ত ক্রস-রেফারেন্স। blokspeed.net/blog/2010/09/converting-from-subversion-to-git
kgriffs

4
এটি 99% দুর্দান্ত, এই পদক্ষেপগুলি অনুসরণ করে, আমি শাখাগুলি ব্যতীত সমস্ত কিছুকে যথাযথভাবে পেয়েছি: চূড়ান্ত পদক্ষেপের পরে, তারা কেবলমাত্র দূরবর্তী ছিল (এবং যখন আমি আদেশটি দিয়েছিলাম তখন অদৃশ্য হয়ে গেছে)
ডার্টি হেনরি

4
গিটহাবের একটি খুব সুবিধাজনক ধাপে ধাপে রয়েছে: github.com/nirvdrum/svn2git#readme
ড্যান নিসেনবাউল

8
উইন্ডোসের অধীনে যারা আছেন তাদের জন্য, আমি এই পদ্ধতির উপর ভিত্তি করে একটি পাওয়ারশেল স্ক্রিপ্ট তৈরি করেছি: gist.github.com/Gimly/90df046dc38181bb18de
গিমলি

5
অনেক ইতিহাস সহ বৃহত্তর রেপোসের জন্য সতর্কতা , এটি ধীর এবং ক্লান্তিকর । আমি পুরানো সমস্ত শাখা স্থানান্তরিত করার চেষ্টা ছেড়ে দিয়েছিলাম এবং কেবল ট্রাঙ্কে স্থানান্তরিত করেছি।
জেস

195

আপনার সাবসার্শন রিপোজিটরিটি পরিষ্কারভাবে গিট রিপোজিটরিতে স্থানান্তর করুন । প্রথমে আপনাকে এমন একটি ফাইল তৈরি করতে হবে যা আপনার সাবভার্সন মানচিত্রের লেখকদের নাম গিট প্রতিশ্রুতিবদ্ধদের কাছে মানচিত্র করে, বলে ~/authors.txt:

jmaddox = Jon Maddox <jon@gmail.com>
bigpappa = Brian Biggs <bigpappa@gmail.com>

তারপরে আপনি গিট সংগ্রহস্থলে সাবভার্সন ডেটা ডাউনলোড করতে পারেন:

mkdir repo && cd repo
git svn init http://subversion/repo --no-metadata
git config svn.authorsfile ~/authors.txt
git svn fetch

আপনি যদি ম্যাকে থাকেন তবে git-svnইনস্টল করে আপনি ম্যাকপোর্টগুলি থেকে পেতে পারেন git-core +svn

যদি আপনার সাবভার্সন সংগ্রহস্থলটি আপনার কাঙ্ক্ষিত গিট সংগ্রহস্থলের মতো একই মেশিনে থাকে, তবে আপনি এই পদক্ষেপটি init পদক্ষেপের জন্য ব্যবহার করতে পারেন, অন্যথায় সমস্ত একই:

git svn init file:///home/user/repoName --no-metadata

1
আমি অন্য উত্তরে মন্তব্য করার সাথে সাথে আমাকে আশেপাশের স্থানগুলি সরিয়ে ফেলতে =হয়েছিল users.txtকারণ আমদানি বাতিল ছিল এবং আমি একটি খালি সংগ্রহস্থল পাচ্ছি।
সেবাস্তিয়ান গ্রিগনোলি

8
আহ! সহজ এবং কার্যকর ব্যাখ্যা। আমার ক্ষেত্রে file:///কাজ করতে রাজি হয়নি, আমি কেবল ব্যবহার করেছি svnserve.exe --daemonএবং তার svn://localhost/home/user/repoপরিবর্তে ব্যবহার করেছি ।
ড্যানিয়েল রেইস

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

3
আমার ক্ষেত্রে আমাকে ফাইলটি রূপান্তর করতে authors.txtহয়েছিল utf-8 without BOM
সিলভান

এটি আমার জন্য কাজ করে মহান! একবার আমার স্থানীয় সংগ্রহস্থলটি আসার পরে, আমি "আপনার জিআইটি-এসভিএন সংগ্রহস্থলটিকে ক্লিন গিট সংগ্রহস্থল হিসাবে ক্লোন করুন:" থেকে শুরু করে সেমিসিগিন্টির পোস্টটি ব্যবহার করেছি: আমার মনে হয় @ জলের উত্তর পছন্দ করার মূল কারণটি ছিল git svn init, git svn configতবে শেষ git svn fetchপর্যন্ত এটি সহজ ছিল এইভাবে এটি করতে, আমাকে এটি সঠিকভাবে পেতে বেশ কয়েকবার আনতে হয়েছিল। তিনটি করেই সিএমসিগিন্টির একক লাইনটি git svn cloneআমার জন্য খুব জটিল হয়েছিল।
মাইকে

70

আমি svn2git স্ক্রিপ্ট ব্যবহার করেছি এবং একটি কবজির মতো কাজ করি।


4
প্রশ্ন: ট্যাগ এবং শাখার নামগুলিতে এই স্থির জায়গাটি (এসএনএন-এ অনুমোদিত এবং গিটে অনুমোদিত নয়)?
স্পাজম

2
এটি ব্যবহারের জন্য এই গাইডটি সহায়ক: Troyhunt.com/2014/08/migrating-from-subversion-to-git-with.html
মর্টেন হল্মগার্ড

এই সমস্যার সাথে আমার জন্য ব্যর্থ হয়েছে: groups.google.com/forum/#!topic/msysgit/7MQVwRO-2N4 - এছাড়াও দেখুন: github.com/nirvdrum/svn2git/issues/50 সমাধান এখানে ছিল: stackoverflow.com/questions / 3009738 /…
এইচডিভে

উত্তরগুলি ব্যাখ্যা করা ভাল otherwise নইলে আমরা স্ক্রিপ্ট কিডিস উত্পাদন করি।
জোশ হাবদাস

আপনার শাখাগুলি সমস্ত এসভিএন এর মূলে রয়েছে এবং আপনার কোনও ট্রাঙ্ক বা ট্যাগ নেই সে সম্পর্কে কী?
কাল

58

আমি ক্রমাগত গিট-এসএনএন ব্যবহার করার চেষ্টা করার আগে গিটের সাথে স্বাচ্ছন্দ্য বোধ করার পরামর্শ দিই, যেমন এসভিএনকে কেন্দ্রীয়ীকৃত রেপো হিসাবে রাখি এবং স্থানীয়ভাবে গিট ব্যবহার করি।

তবে সমস্ত ইতিহাসের সাথে সরল মাইগ্রেশনের জন্য কয়েকটি সহজ পদক্ষেপ এখানে দেওয়া হল:

স্থানীয় রেপো চালু করুন:

mkdir project
cd project
git svn init http://svn.url

আপনি কতটা পিছনে পুনর্বিবেচনাগুলি আমদানি শুরু করতে চান তা চিহ্নিত করুন:

git svn fetch -r42

(বা সমস্ত রেভের জন্য কেবল "গিট এসএনএন আনতে")

আসলে তখন থেকে সবকিছু আনুন:

git svn rebase

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

gitk

আপনি যখন নিজের এসভিএন রেপো স্থানীয়ভাবে ক্লোন করে পেয়েছেন, সহজেই সহযোগিতার জন্য আপনি এটিকে কেন্দ্রীয়ীকৃত গিট রেপোতে চাপতে চাইতে পারেন।

প্রথমে আপনার খালি রিমোট রেপো তৈরি করুন (সম্ভবত গিটহাবের উপরে ?):

git remote add origin git@github.com:user/project-name.git

তারপরে, allyচ্ছিকভাবে আপনার মূল শাখাটি সিঙ্ক করুন যাতে টান অপারেশন স্বয়ংক্রিয়ভাবে দূরবর্তী মাস্টারটিকে আপনার স্থানীয় মাস্টারের সাথে একত্রীকরণ করে, যখন উভয়ই নতুন জিনিস থাকে:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

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

প্রথম ব্যাখ্যামূলক পোস্ট: " গিট দূরবর্তী শাখা "

অতি সাম্প্রতিক সংস্করণটির জন্য ফলোআপ: " git_remote_branch সাথে সহযোগিতা করার সময় "


অত্যন্ত সহায়ক, এটি নিখুঁতভাবে কাজ করেছে। আমি যুক্ত করব যে আপনি যদি কোনও দূরবর্তী সংগ্রহস্থলের সাথে সংযোগ স্থাপন করছেন তবে একটি চূড়ান্ত পদক্ষেপ নিতে হবে। গিট কনফিগার পদক্ষেপের পরে, আমার দরকার ছিলgit push origin master
Mag382

31

সাবভারশন থেকে গিটে মসৃণ স্থানান্তরের জন্য একটি নতুন সমাধান রয়েছে (বা একসাথে উভয় ব্যবহারের জন্য): সাবজিট

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

সাবগিটার থেকে সাবগিটের সাথে গিটে স্থানান্তর করতে আপনাকে চালনা করতে হবে:

$ subgit install svn_repos
...
TRANSLATION SUCCESSFUL 

এর পরে আপনি এসভিএন_রেপস /। জিগিতে গিট সংগ্রহস্থলটি পাবেন এবং এটি ক্লোন করতে পারেন, বা কেবল সাবভার্সন এবং এই নতুন গিট সংগ্রহস্থল একসাথে ব্যবহার করা চালিয়ে যেতে পারেন: সাবজিট নিশ্চিত করবে যে উভয়ই সর্বদা সিঙ্কে রাখা আছে kept

যদি আপনার সাবভার্সন সংগ্রহস্থলে একাধিক প্রকল্প থাকে, তবে একাধিক গিট সংগ্রহস্থলগুলি svn_repos / git ডিরেক্টরিতে তৈরি করা হবে। অনুবাদটি চালানোর আগে কাস্টমাইজ করতে নিম্নলিখিতটি করুন:

$ subgit configure svn_repos
$ edit svn_repos/conf/subgit.conf (change mapping, add authors mapping, etc)
$ subgit install svn_repos

সঙ্গে SubGit আপনি বিশুদ্ধ গীত (না Git-SVN) স্থানান্তর এবং এটি ব্যবহার করার সময় এখনও যতদিন Subversion পালন যেমন আপনি এটি প্রয়োজন (আপনার ইতিমধ্যেই কনফিগার বিল্ড সরঞ্জামের, উদাহরণস্বরূপ) শুরু হতে পারে।

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


4
মনে রাখবেন যে এককালীন আমদানি ( subgit importকমান্ডটি ব্যবহার করে ) এমনকি লাইসেন্সের প্রয়োজন বলে মনে হয় না। ফাইলগুলিতে svn:ignoreসম্পত্তিটির যথাযথ অনুবাদও .gitignoreঅন্তর্ভুক্ত রয়েছে।
krlmlr

1
সাবগিটটি আমার ব্যক্তিগত কী বা কমান্ড লাইনে সেট করা কোনও পতাকা সনাক্ত করতে পারে না। ডকুমেন্টেশন খুব খারাপ। এটি এর পক্ষে কার্যকর একটি বিকল্প নয় git svn
pfnuesel

1
ত্রুটি: 'svn_repos' একটি বৈধ কনফিগার করা অবস্থান নয়; সাবজিট কনফিগারেশন ফাইলটি অনুপস্থিত।
জন ডেভিস

19

অফিসিয়াল গিট-এসএনএন ম্যানপেজ দেখুন । বিশেষত, "বেসিক উদাহরণসমূহ" এর নীচে দেখুন:

ট্র্যাকিং এবং একটি সম্পূর্ণ সাবভারশন-পরিচালিত প্রকল্পে অবদান (একটি ট্রাঙ্ক, ট্যাগ এবং শাখা দ্বারা সম্পূর্ণ):

# Clone a repo (like git clone):
    git svn clone http://svn.foo.org/project -T trunk -b branches -t tags

আপনার ক্লোন কমান্ডটি কাজ করেছে, উপরোক্তরা আমাকে খালি গিট রেপো ছাড়া কিছুই দেয়নি। পার্থক্যটি কেবল স্পষ্টত '-টি ট্রাঙ্ক' বলে মনে হচ্ছে।
ব্যবহারকারী 1984717

14

প্রো গীত 8.2 এটা ব্যাখ্যা করে: http://git-scm.com/book/en/Git-and-Other-Systems-Migrating-to-Git


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

14

সাবজিট (বনাম মৃত্যুর ব্লু স্ক্রিন)

subgit import --svn-url url://svn.serv/Bla/Bla  directory/path/Local.git.Repo

এটা সব।

এসভিএন থেকে আপডেট করার জন্য, প্রথম কমান্ড দ্বারা নির্মিত একটি গিট সংগ্রহস্থল।

subgit import  directory/path/Local.git.Repo

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

এখানে আমার উপায়।

আমার সমাধানটি দেখে মনে হচ্ছে:

  • এসভিএন একটি গিট সংগ্রহস্থলে স্থানান্তরিত করুন
  • দলের স্যুইচ করার ঠিক আগে গিট সংগ্রহস্থল আপডেট করুন

একটি বড় এসভিএন সংগ্রহস্থলের জন্য মাইগ্রেশন অনেক সময় নেয়।
তবে সম্পন্ন মাইগ্রেশনটি মাত্র কয়েক সেকেন্ডের আপডেট।

অবশ্যই আমি সাবজিট , মামা ব্যবহার করছি । গিট-এসএনএন আমাকে ব্লু স্ক্রিন অফ ডেথ করেছে । শুধু ক্রমাগত। এবং গিট-এসএনএন আমাকে গিটের " ফাইল নাম খুব দীর্ঘ " মারাত্মক ত্রুটির সাথে বিরক্ত করছে ।

STEPS টি

1. সাবজিট ডাউনলোড করুন

২. মাইগ্রেট এবং আপডেট করার আদেশগুলি প্রস্তুত করুন।

ধরা যাক আমরা এটি উইন্ডোজের জন্য করি (এটি লিনাক্সে পোর্ট করা তুচ্ছ)।
সাবগিটের ইনস্টলেশন বিন ডিরেক্টরিতে (সাবজিট -২.এক্সএক্স \ বিন), দুটি .bat ফাইল তৈরি করুন।

স্থানান্তরের জন্য একটি ফাইল / কমান্ডের সামগ্রী:

start    subgit import --svn-url url://svn.serv/Bla/Bla  directory/path/Local.git.Repo

"স্টার্ট" কমান্ডটি এখানে (উইন্ডোজ) isচ্ছিক। এটি শুরুতে ত্রুটিগুলি দেখার অনুমতি দেবে এবং সাবজিট শেষ হওয়ার পরে একটি শেল খোলা থাকবে।

আপনি এখানে গিট-এসএনএন এর অনুরূপ অতিরিক্ত পরামিতি যুক্ত করতে পারেন । এসভিএন লেখকের ইমেল ঠিকানাটির ডোমেনটি ঠিক করতে আমি কেবলমাত্র --default- ডোমেন myCompanyDomain.com ব্যবহার করছি ।
আমার কাছে স্ট্যান্ডার্ড এসভিএন সংগ্রহস্থলের কাঠামো (ট্রাঙ্ক / শাখা / ট্যাগ) রয়েছে এবং আমাদের "লেখক ম্যাপিং" নিয়ে সমস্যা হয়নি। সুতরাং আমি আর কিছুই করছি না।

(আপনি যদি শাখাগুলির মতো ট্যাগগুলি স্থানান্তর করতে চান বা আপনার এসভিএন এর একাধিক শাখা / ট্যাগ ফোল্ডার রয়েছে তবে আপনি আরও ভার্জোজ সাবগিট পদ্ধতির ব্যবহার বিবেচনা করতে পারেন )

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

টিপ 2 : মাইগ্রেশন বিঘ্নিত হতে পারে ( Ctrl+ C) এবং পরবর্তী আপডেটিং কমান্ড / ফাইল চালিয়ে পুনরুদ্ধার করা যেতে পারে ।
আমি বড় সংগ্রহস্থলের জন্য এটি করার পরামর্শ দিচ্ছি না। আমি "আউট অফ মেমরি জাভা + উইন্ডোজ ব্যতিক্রম" পেয়েছি।

টিপ 3 : আপনার ফলাফল খালি সংগ্রহের অনুলিপি তৈরি করা আরও ভাল।

আপডেট করার জন্য একটি ফাইল / কমান্ডের সামগ্রী:

start    subgit import  directory/path/Local.git.Repo

আপনি যখন আপনার গিট সংগ্রহস্থলে সর্বশেষ দলের প্রতিশ্রুতি পেতে চান তখন আপনি এটিকে যে কোনও পরিমাণে চালাতে পারেন।

সতর্কবাণী! আপনার খালি ভাণ্ডার স্পর্শ করবেন না (উদাহরণস্বরূপ শাখাগুলি তৈরি করা)।
আপনি পরবর্তী মারাত্মক ত্রুটি গ্রহণ করবেন:

অপরিবর্তনযোগ্য ত্রুটি: সিঙ্কের বাইরে এবং সিঙ্ক করা যায় না ... গিট কমিটে সাবভার্সন রিভিশনগুলি অনুবাদ করে ...

৩. প্রথম কমান্ড / ফাইলটি চালান। এটি একটি বড় সংগ্রহস্থলের জন্য দীর্ঘ সময় নিতে হবে। আমার নম্র ভাণ্ডারের জন্য 30 ঘন্টা।

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



আরও একটি কার্যকর কাজ আছে।

আপনার স্থানীয় গিট সংগ্রহস্থলকে একটি দূরবর্তী গিট সংগ্রহস্থলে পুশ করুন

এটা কি আপনার কেস? এগিয়ে চলুন।

  1. আপনার রিমোটগুলি কনফিগার করুন

চালান:

$ git remote add origin url://your/repo.git
  1. আপনার বিশাল স্থানীয় গিট সংগ্রহস্থলকে দূরবর্তী সংগ্রহস্থলে প্রেরণের জন্য প্রস্তুত করুন

ডিফল্টরূপে আপনার গিট বড় অংশগুলি প্রেরণ করতে পারে না। মারাত্মক: দূরবর্তী প্রান্তটি অপ্রত্যাশিতভাবে স্তব্ধ হয়ে গিয়েছিল

এর জন্য দৌড়া যাক:

git config --global http.postBuffer 1073741824

524288000 - 500 এমবি 1073741824 - 1 জিবি ইত্যাদি etc.

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

আমি শংসাপত্র অক্ষম করেছি ।

এছাড়াও আপনার গিট সার্ভারে একটি অনুরোধের পরিমাণ সীমাবদ্ধতা থাকতে পারে যা সংশোধন করা দরকার

  1. দলের দূরবর্তী গিট সংগ্রহস্থলে সমস্ত স্থানান্তর ঠেলাও।

স্থানীয় গিট দিয়ে চালান:

git push origin --mirror

( পুরানো গিট সংস্করণগুলির জন্য গিট পুশ অরিজিন '*: *' )

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

git push origin --all
git push origin --tags

বা গিট পুনরায় ইনস্টল করার চেষ্টা করুন ( আমার পক্ষে অকেজো )। অথবা আপনি আপনার সমস্ত ট্যাগ থেকে শাখা তৈরি করতে এবং এটিকে পুশ করতে পারেন। বা, বা, বা ...


10

reposurgeon

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

স্পষ্টতই সরঞ্জামটির নিখুঁত রূপান্তর (যেমন এসভিএন এর svn:ignoreসম্পত্তিগুলিকে .gitignoreফাইলগুলিতে রূপান্তর করা) এমনকি দীর্ঘ ইতিহাসের জন্য কঠিন সংগ্রহস্থল বিন্যাসের জন্যও লক্ষ্য করা যায় । অনেক ক্ষেত্রে, অন্যান্য সরঞ্জামগুলি ব্যবহার করা সহজ হতে পারে।

reposurgeonকমান্ড লাইনের ডকুমেন্টেশনগুলি আবিষ্কার করার আগে , ডিভিসিএসের দুর্দান্ত স্থানান্তর গাইডটি পড়তে ভুলবেন না যা ধাপে ধাপে রূপান্তর প্রক্রিয়াটি অতিক্রম করে।


8

আটলাশিয়ান ওয়েবসাইটের এই গাইডটি আমার মধ্যে অন্যতম সেরা খুঁজে পাওয়া গেছে:

https://www.atlassian.com/git/migration

এই সরঞ্জামটি - https://bitbucket.org/atlassian/svn-migration-scriptts - অন্যান্য বিষয়ের মধ্যেও আপনার লেখক.txt তৈরির জন্য সত্যই কার্যকর।


এই পৃষ্ঠাটি দুর্দান্ত, এবং IMHO সেরা উত্তর! এটি আপনার জন্য সবচেয়ে ক্ষীণ কাজ করে।
PfunnyGuy

8

আপনাকে ইনস্টল করতে হবে

git
git-svn

এই লিঙ্ক থেকে অনুলিপি করা হয়েছে http://john.albin.net/git/convers-subversion-to-git

1. সমস্ত সাবভার্সন প্রতিশ্রুতিবদ্ধদের একটি তালিকা পুনরুদ্ধার করুন

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

আপনার স্থানীয় সাবভারশন চেকআউটটির মূল থেকে, এই আদেশটি চালান:

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt

এটি সমস্ত লগ বার্তা গ্রহন করবে, ব্যবহারকারীর নামগুলি ছড়িয়ে দেবে, কোনও সদৃশ ব্যবহারকারীর নাম মুছে ফেলবে, ব্যবহারকারীর নামগুলি বাছাই করবে এবং এগুলিকে একটি "লেখক-ট্রান্সফর্ম। টেক্সট" ফাইলে রাখবে। এখন ফাইলের প্রতিটি লাইন সম্পাদনা করুন। উদাহরণস্বরূপ, রূপান্তর করুন:

jwilkins = jwilkins <jwilkins>

এটিতে:

jwilkins = John Albin Wilkins <johnalbin@example.com>

2. গিট-এসএনএন ব্যবহার করে সাবভার্সন সংগ্রহস্থলটি ক্লোন করুন

git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp

এটি স্ট্যান্ডার্ড গিট-এসএনএন রূপান্তর করবে (আপনি পদক্ষেপ 1 এ তৈরি করেছেন লেখক-ট্রান্সফর্ম। টেক্সট ফাইল ব্যবহার করে) এবং গিট সংগ্রহস্থলটি আপনার হোম ডিরেক্টরিতে "~ / টেম্প" ফোল্ডারে রাখবেন।

3. রূপান্তর করুন এসএনএন: বৈশিষ্ট্যগুলি .gitignore এ উপেক্ষা করুন

যদি আপনার এসএনএন রেপো এসএনএন ব্যবহার করে: বৈশিষ্ট্যগুলি উপেক্ষা করে, আপনি সহজেই এটি ব্যবহার করে একটি .gitignore ফাইলে রূপান্তর করতে পারেন:

cd ~/temp
git svn show-ignore > .gitignore
git add .gitignore
git commit -m 'Convert svn:ignore properties to .gitignore.'

4. একটি খালি গিট সংগ্রহস্থল পুস্তক পুশ করুন

প্রথমে একটি খালি সংগ্রহস্থান তৈরি করুন এবং এর ডিফল্ট শাখাটি মিলিয়ে এসএনএন-এর "ট্রাঙ্ক" শাখার নাম করুন।

git init --bare ~/new-bare.git
cd ~/new-bare.git
git symbolic-ref HEAD refs/heads/trunk

তারপরে টেম্প রিপোজিটরিটিকে নতুন খালি ভাণ্ডারে চাপ দিন।

cd ~/temp
git remote add bare ~/new-bare.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare

আপনি এখন নিরাপদে ~ / টেম্পোর সংগ্রহস্থল মুছতে পারেন।

৫. "ট্রাঙ্ক" শাখার নাম "মাস্টার" করুন

আপনার মূল বিকাশ শাখার নাম দেওয়া হবে "ট্রাঙ্ক" যা এটি সাবভার্সনে থাকা নামের সাথে মেলে। আপনি এটি ব্যবহার করে গিটের স্ট্যান্ডার্ড "মাস্টার" শাখায় নাম পরিবর্তন করতে চান:

cd ~/new-bare.git
git branch -m trunk master

Branches. শাখা এবং ট্যাগগুলি পরিষ্কার করুন

গিট-এসএনএন ফর্মের "গিগাবাইট / নাম" ফর্মের খুব স্বল্প শাখায় সমস্ত সাবভারশনগুলিকে ট্যাগ করে। আপনি এই সমস্ত শাখাকে প্রকৃত গিট ট্যাগগুলিতে রূপান্তর করতে চাইবেন:

cd ~/new-bare.git
git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d / -f 4 |
while read ref
do
  git tag "$ref" "refs/heads/tags/$ref";
  git branch -D "tags/$ref";
done

এই পদক্ষেপটি কিছুটা টাইপ করবে। :-) তবে, চিন্তা করবেন না; আপনার ইউনিক্স শেলটি প্রতিটি-রেফের জন্য গিট দিয়ে শুরু হওয়া অতিরিক্ত দীর্ঘ কমান্ডের জন্য একটি> সেকেন্ডারি প্রম্পট সরবরাহ করবে।


7

গিটহাবের এখন একটি এসভিএন সংগ্রহস্থল থেকে আমদানি করার বৈশিষ্ট্য রয়েছে । যদিও আমি কখনও চেষ্টা করে দেখিনি।


3
গিটহাবের বর্তমান পরামর্শটি হ'ল অন্য উত্তরেsvn2git প্রস্তাবিত প্রোগ্রামটি ব্যবহার করা ।
এনটিসি 2

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

7

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

অবদানকারী বিভিন্ন লোকের জন্য আপনার এসভিএন রেপো স্ক্যান করতে এবং ম্যাপিং ফাইলের জন্য একটি টেম্পলেট তৈরি করতে প্রথমে এই বাশ স্ক্রিপ্টটি ব্যবহার করুন:

#!/usr/bin/env bash
authors=$(svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2 }' | sort | uniq)
for author in ${authors}; do
  echo "${author} = NAME <USER@DOMAIN>";
done

এমন একটি authorsফাইল তৈরি করতে এটি ব্যবহার করুন যেখানে আপনি ব্যবহারকারীর নাম এবং ইমেলগুলিতে আপনার ব্যবহারকারীর নাম এবং ইমেলের সাথে মানচিত্র ব্যবহার git configকরে user.nameএবং এসএমএন-এর জন্য মেমরির মানচিত্র রাখেন এবং user.emailলক্ষ্য রাখবেন যে গিটহাবের মতো কোনও পরিষেবার জন্য কেবল একটি মেলে ইমেল থাকা যথেষ্ট))

তারপরে git svnএসপিএন সংগ্রহস্থলটিকে একটি গিট সংগ্রহস্থলের ক্লোন করে ম্যাপিংয়ের বিষয়ে বলুন:

git svn clone --authors-file=authors --stdlayout svn://example.org/Folder/projectroot

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

এটি একই নেটওয়ার্কে বা একই সার্ভারে একটি সার্ভারে চালানো সত্যিই এটির গতি বাড়িয়ে দিতে পারে। এছাড়াও, যদি কোনও কারণে এই প্রক্রিয়াটি বাধাগ্রস্ত হয় তবে আপনি এটি ব্যবহার করে এটি আবার শুরু করতে পারেন

git svn rebase --continue

অনেক ক্ষেত্রে আপনি এখানে সম্পন্ন করেছেন। তবে যদি আপনার এসভিএন রেপোর একটি প্রচলিত লেআউট থাকে যেখানে আপনার কেবল এসভিএন-তে একটি ডিরেক্টরি থাকে তবে আপনি গিট শাখায় রাখতে চান আপনি কিছু অতিরিক্ত পদক্ষেপ করতে পারেন।

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

আপনি গিট ব্যবহার করে এটিও করতে পারেন। জন্যgit svn clone কেবল ডিরেক্টরি ব্যবহার আপনি একটি Git শাখা স্থাপন করা চাই।

রান করার পরে

git branch --set-upstream master git-svn
git svn rebase

নোট করুন যে এটির জন্য গিট 1.7 বা তারও বেশি প্রয়োজন।


আমি এই লিঙ্কটির সাথে এই তথ্যটি একত্রিত করার জন্য প্রস্তাব করব: sailmaker.co.uk/blog/2013/05/05/…
জোয়ান পিএস

7

আমি ধাপে ধাপে গাইড পোস্ট করেছি ( এখানে এসআইএনএন-কে গিট ট্যাগে গিট ট্যাগ এবং এসএনএন শাখায় গিট শাখায় রূপান্তরিত করে গিটকে রূপান্তর করতে ) ।

সংক্ষিপ্ত সংস্করণ:

1) একটি নির্দিষ্ট সংশোধন নম্বর থেকে ক্লোন এসএনএন। (আপনি স্থানান্তর করতে চান সংশোধন নম্বরটি অবশ্যই সবচেয়ে পুরনো হবে)

git svn clone --username=yourSvnUsername -T trunk_subdir -t tags_subdir -b branches_subdir -r aRevisionNumber svn_url gitreponame

2) এসএনএন ডেটা আনুন। এই পদক্ষেপটি এটি সবচেয়ে বেশি সময় নেয়।

cd gitreponame
git svn fetch

ত্রুটি ছাড়াই শেষ না হওয়া পর্যন্ত পুনরাবৃত্তি গিট এসএনএন আনুন

3) মাস্টার শাখা আপডেট করা

git svn rebase

৪) রেফারেন্সগুলি অনুলিপি করে এসএনএন শাখা থেকে স্থানীয় শাখা তৈরি করুন

cp .git/refs/remotes/origin/* .git/refs/heads/

5) এসএনএন ট্যাগগুলি গিট ট্যাগগুলিতে রূপান্তর করুন

git for-each-ref refs/remotes/origin/tags | sed 's#^.*\([[:xdigit:]]\{40\}\).*refs/remotes/origin/tags/\(.*\)$#\2 \1#g' | while read p; do git tag -m "tag from svn" $p; done

)) গিথুবের মতো আরও ভাল জায়গায় একটি সংগ্রহস্থল রাখুন

git remotes add newrepo git@github.com:aUser/aProjectName.git
git push newrepo refs/heads/*
git push --tags newrepo

আপনি যদি আরও বিশদ চান তবে আমার পোস্টটি পড়ুন বা আমাকে জিজ্ঞাসা করুন।


6

আমরা git svn cloneনীচের মত কমান্ড ব্যবহার করতে পারেন ।

  • svn log -q <SVN_URL> | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors.txt

উপরের কমান্ডটি এসভিএন কমিট থেকে লেখক ফাইল তৈরি করবে।

  • svn log --stop-on-copy <SVN_URL>

আপনার এসভিএন প্রকল্পটি তৈরি হওয়ার পরে উপরের কমান্ডটি আপনাকে প্রথম সংশোধন নম্বর দেবে।

  • git svn clone -r<SVN_REV_NO>:HEAD --no-minimize-url --stdlayout --no-metadata --authors-file authors.txt <SVN_URL>

উপরের কমান্ডটি স্থানীয়ভাবে গিট সংগ্রহস্থল তৈরি করবে।

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

$ git remote add origin https://github.com/pankaj0323/JDProjects.git
$ git branch -a
* master
  remotes/origin/MyDevBranch
  remotes/origin/tags/MyDevBranch-1.0
  remotes/origin/trunk
$$ git checkout -b MyDevBranch origin/MyDevBranch
Branch MyDevBranch set up to track remote branch MyDevBranch from origin.
Switched to a new branch 'MyDevBranch'
$ git branch -a
* MyDevBranch
  master
  remotes/origin/MyDevBranch
  remotes/origin/tags/MyDevBranch-1.0
  remotes/origin/trunk
$

ট্যাগের জন্য:

$git checkout origin/tags/MyDevBranch-1.0
Note: checking out 'origin/tags/MyDevBranch-1.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 3041d81... Creating a tag
$ git branch -a
* (detached from origin/tags/MyDevBranch-1.0)
  MyDevBranch
  master
  remotes/origin/MyDevBranch
  remotes/origin/tags/MyDevBranch-1.0
  remotes/origin/trunk
$ git tag -a MyDevBranch-1.0 -m "creating tag"
$git tag
MyDevBranch-1.0
$

এখন মাস্টার, শাখা এবং ট্যাগগুলিকে রিমোট গিট সংগ্রহস্থলে ঠেকান push

$ git push origin master MyDevBranch MyDevBranch-1.0
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (14/14), 2.28 KiB | 0 bytes/s, done.
Total 14 (delta 3), reused 0 (delta 0)
To https://github.com/pankaj0323/JDProjects.git
 * [new branch]      master -> master
 * [new branch]      MyDevBranch -> MyDevBranch
 * [new tag]         MyDevBranch-1.0 -> MyDevBranch-1.0
$

svn2git ইউটিলিটি

svn2git ইউটিলিটি শাখা এবং ট্যাগ সহ ম্যানুয়াল প্রচেষ্টা সরিয়ে দেয়।

কমান্ড ব্যবহার করে এটি ইনস্টল করুন sudo gem install svn2git। কমান্ডের নীচে রান করুন।

  • $ svn2git <SVN_URL> --authors authors.txt --revision <SVN_REV_NO>

এখন আপনি শাখাগুলি, ট্যাগগুলি তালিকা করতে পারেন এবং এগুলিকে সহজেই ঠেলাতে পারেন।

$ git remote add origin https://github.com/pankaj0323/JDProjects.git
$ git branch -a
  MyDevBranch
* master
  remotes/svn/MyDevBranch
  remotes/svn/trunk
$ git tag
  MyDevBranch-1.0
$ git push origin master MyDevBranch MyDevBranch-1.0

কল্পনা করুন আপনার 20 টি শাখা এবং ট্যাগ রয়েছে স্পষ্টতই svn2git আপনাকে অনেক সময় সাশ্রয় করবে এবং সে কারণেই আমি এটি দেশীয় কমান্ডের চেয়ে ভাল পছন্দ করি। এটি নেটিভ git svn cloneকমান্ডের চারপাশে একটি দুর্দান্ত মোড়ক ।

একটি সম্পূর্ণ উদাহরণের জন্য, আমার ব্লগ এন্ট্রি পড়ুন ।


5

কচ্ছপগ্রাহী এটি করে। এই ব্লগ পোস্টটি দেখুন: http://jimmykeen.net/articles/03-nov-2012/how-migrate-from-svn-to-git-windows- using-tortoise-clients

হ্যাঁ, আমি জানি লিঙ্কগুলির সাথে উত্তর দেওয়া জাঁকজমকপূর্ণ নয় তবে এটি একটি সমাধান, তাই না?


আর্কাইভ.আরজে ওয়েডব্যাক মেশিনটি ব্যবহার করে দেখুন
সিএডি


3

যদি আপনি সোর্স ট্রি ব্যবহার করে থাকেন তবে আপনি সরাসরি অ্যাপ্লিকেশন থেকে এটি করতে পারেন। গোটো ফাইল -> নতুন / ক্লোন তারপর নিম্নলিখিতটি করুন:

  1. "উত্স পথ / URL" হিসাবে দূরবর্তী এসভিএন URL লিখুন।
  2. জিজ্ঞাসা করা হলে আপনার শংসাপত্রগুলি প্রবেশ করান।
  3. স্থানীয় ফোল্ডারের অবস্থানটি "গন্তব্য পথ" হিসাবে প্রবেশ করুন।
  4. এটিকে একটি নাম দিন.
  5. উন্নত বিকল্পগুলিতে ড্রপডাউন থেকে "গিট" নির্বাচন করুন "টাইপের স্থানীয় স্টোর সংগ্রহ করুন"।
  6. আপনি ক্লোন থেকে বিকল্পটি একটি বিকল্প নির্দিষ্ট করতে পারেন।
  7. হিট ক্লোন

সোর্সট্রিতে রেপো খুলুন এবং আপনি দেখতে পাবেন যে আপনার প্রতিশ্রুতি বার্তাগুলিও স্থানান্তরিত হয়েছে।

এখন সংগ্রহস্থল -> সংগ্রহস্থল সেটিংসে যান এবং নতুন দূরবর্তী রেপো বিশদ যুক্ত করুন। আপনি যদি চান তবে এসভিএন রিমোট মুছুন (আমি "কনফিগার ফাইল সম্পাদনা করুন" বিকল্পের মাধ্যমে এটি করেছি।

আপনি প্রস্তুত এবং অবাধে কোড করার সময় নতুন রিমোট রেপোতে কোডটি পুশ করুন।


ধন্যবাদ, অতীত এবং দ্রুত!
রিকার্ড

আপনাকে ধন্যবাদ। এটি আমার পক্ষে কাজ করেছে I আমি সোর্স ট্রি এবং স্ট্যাশ ব্যবহার করছি।
ভি কে_217 17

3

জন্য GitLab ব্যবহারকারীদের আমি কীভাবে আমি SVN থেকে এখানে স্থানান্তরিত উপর একটি সারকথা আপ করা করেছি:

https://gist.github.com/leftclickben/322b7a3042cbe97ed2af

এসভিএন থেকে গিটল্যাবে স্থানান্তরিত করার পদক্ষেপ

সেটআপ

  • এসভিএন হোস্ট করা হয় svn.domain.com.au
  • এসভিএন এর মাধ্যমে অ্যাক্সেসযোগ্য http(অন্যান্য প্রোটোকলগুলি কাজ করা উচিত)।
  • গিটল্যাব হোস্ট করা হয় git.domain.com.auএবং:
    • নেমস্পেস দিয়ে একটি গ্রুপ তৈরি করা হয়েছে dev-team
    • কমপক্ষে একটি ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয়, গ্রুপে যুক্ত করা হয়, এবং অ্যাকাউন্টটি মাইগ্রেশনের জন্য ব্যবহারের জন্য পরীক্ষার জন্য (এসএসএইচ কী ssh git@git.domain.com.au) রয়েছে।
    • প্রকল্পটি নেমস্পেসে favourite-projectতৈরি করা হয়েছে dev-team
  • ফাইলটিতে users.txtপ্রাসঙ্গিক ব্যবহারকারীর বিবরণ রয়েছে, ফর্মের প্রতি লাইন একজন ব্যবহারকারী username = First Last <address@domain.com.au>, যেখানে usernameএসভিএন লগগুলিতে ব্যবহারকারীর নাম দেওয়া আছে। (বিশদগুলির জন্য রেফারেন্স বিভাগে প্রথম লিঙ্কটি দেখুন, ব্যবহারকারী কেসির বিশেষ উত্তরে)।

সংস্করণ

  • subversion সংস্করণ 1.6.17 (r1128011)
  • গিট সংস্করণ 1.9.1
  • গিটল্যাব সংস্করণ 7.2.1 ff1633f
  • উবুন্টু সার্ভার 14.04

কমান্ড

bash
git svn clone --stdlayout --no-metadata -A users.txt 
http://svn.domain.com.au/svn/repository/favourite-project
cd favourite-project
git remote add gitlab git@git.domain.com.au:dev-team/favourite-project.git
git push --set-upstream gitlab master

এটাই! গিটল্যাব ওয়েব ইউআইতে প্রকল্প পৃষ্ঠাটি পুনরায় লোড করুন এবং আপনি এখন তালিকাভুক্ত সমস্ত কমিট এবং ফাইলগুলি দেখতে পাবেন।

মন্তব্য

  • থাকে তাহলে অজানা ব্যবহারকারী, git svn cloneকমান্ড বন্ধ করে দেব যে ক্ষেত্রে, আপডেটে users.txt, cd favourite-projectএবং git svn fetchযেখানে এটি বন্ধ থেকে অব্যাহত থাকবে।
  • এসভিএন সংগ্রহস্থলের জন্য আদর্শ trunk- tags- branchesবিন্যাস প্রয়োজন।
  • SVN URL- এ প্রদত্ত git svn cloneকমান্ড পর্যায়ে স্টপ অবিলম্বে উপরে trunk/, tags/এবংbranches/
  • git svn cloneকমান্ড উপরের কিছু সতর্কবার্তা সহ আউটপুট, অনেকটা উত্পাদন করে; আমি সতর্কতা অবহেলা করেছি।

যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে।
ব্ল্যাকহোল 21

1
আমি একমত নই লিঙ্কযুক্ত সামগ্রীটি পরিবর্তিত হতে পারে, এবং এখানে অনুলিপি করা সামগ্রীটি আপডেট হবে না এবং তাই এটি পুরানো হতে পারে (এবং বাস্তবে আমি বিশ্বাস করি যে এটি মূলত এই উত্তরটি পোস্ট করার পরে এটি পরিবর্তন হয়েছে)। নির্দেশিকাটিতে কেবল একটি লিঙ্কের জন্য কিছু প্রাসঙ্গিক প্রসঙ্গ অন্তর্ভুক্ত করার কথা বলা হয়েছে, যা আমি করেছি - লিঙ্কটি দ্বারা প্রকৃত প্রশ্নের জবাব দেওয়া হয়েছিল। এখানে সম্পূর্ণ লিঙ্কযুক্ত সংস্থান অনুলিপি করা প্রয়োজন বা প্রয়োজনীয় নয়। আমি কি এর জন্য অবহেলিত ছিল ?!
বাম ক্লিককেন

2

অন্যদিকে, গিট-স্ট্যাশ কমান্ড হ'ল গডসেন্ড যখন গিট-এসএনএন ডিকমিটকে নিয়ে গিট করার চেষ্টা করে।

একটি সাধারণ প্রক্রিয়া:

  1. গিট রেপো সেট আপ করুন
  2. বিভিন্ন ফাইল উপর কিছু কাজ
  3. গিট ব্যবহার করে কিছু কাজ পরীক্ষা করার সিদ্ধান্ত নিন
  4. সিদ্ধান্ত নিলো svn-dcommit
  5. ভয়ঙ্কর হয়ে উঠুন "নোংরা সূচির সাথে প্রতিশ্রুতি দিতে পারবেন না" ত্রুটি।

সমাধান (গিট 1.5.3++ প্রয়োজন):

git stash; git svn dcommit ; git stash apply

2

এখানে কোনও নির্ভরতা ছাড়াই একটি সহজ শেল স্ক্রিপ্ট রয়েছে যা এক বা একাধিক এসভিএন সংগ্রহস্থলগুলিকে গিটে রূপান্তরিত করে গিটহাবের দিকে ঠেলে দেবে।

https://gist.github.com/NathanSweet/7327535

স্ক্রিপ্টের প্রায় 30 টি লাইনে এটি: গিট এসভিএন ব্যবহার করে ক্লোনস, এসভিএন থেকে একটি .gitignore ফাইল তৈরি করে :: বৈশিষ্ট্যগুলি উপেক্ষা করে, খালি গিট রিপোজিটরিতে ধাক্কা দেয়, এসভিএন ট্রাঙ্কটির নাম পরিবর্তন করে, গিটিং ট্যাগগুলিতে এসভিএন ট্যাগকে রূপান্তর করে এবং গিটহাবের দিকে ঠেলে দেয় ট্যাগ সংরক্ষণের সময়।

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

শেষ পর্যন্ত আমি দুটি সংক্ষিপ্ত এবং সাধারণ স্ক্রিপ্ট একসাথে আঁকছি, উপরে লিঙ্কযুক্ত এবং এটি দুর্দান্ত কাজ করে। এর চেয়ে সমাধান আর জটিল হওয়ার দরকার নেই!


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

2

I´m একটি উইন্ডোজ মেশিনে এবং একটি ছোট ব্যাচ তৈরি করেছে ইতিহাসের সাথে একটি এসভিএন রেপো স্থানান্তর করার জন্য (তবে শাখা ছাড়াই) কেবল কল করে জিআইটি রেপোতে

transfer.bat http://svn.my.address/svn/myrepo/trunk https://git.my.address/orga/myrepo

সম্ভবত যে কেউ এটি ব্যবহার করতে পারেন। এটি একটি টিএমপি-ফোল্ডার তৈরি করে সেখানে গিট দিয়ে এসভিএন রেপো পরীক্ষা করে এবং নতুন উত্স যুক্ত করে এবং এটি পুশ করে ... এবং ফোল্ডারটি আবার মুছে দেয়।

@echo off 
SET FROM=%1 
SET TO=%2 
SET TMP=tmp_%random%

echo from:  %FROM% 
echo to:    %TO% 
echo tmp:   %TMP%

pause

git svn clone  --no-metadata --authors-file=users.txt %FROM% %TMP%  
cd %TMP% 
git remote add origin %TO% 
git push --set-upstream origin master


cd .. 
echo delete %TMP% ... 
pause

rmdir /s /q %TMP%

আপনার এখনও ব্যবহারকারীদের প্রয়োজন। টেক্সট আপনার ব্যবহারকারী-ম্যাপিংয়ের মতো

User1 = User One <u.1@xxx.com>

এই উত্তরটি আমাকে আমার সমস্ত সংগ্রহস্থলগুলি কোনও সমস্যা ছাড়াই বিটবাকেটে স্থানান্তরিত করতে সহায়তা করেছিল।
গনজালিংই

শুনে খুশি. আমার কেবল গিটার সাথে অভিজ্ঞতা ছিল ... তবে এইভাবে ~~ 40 টি প্রতিস্থাপন ট্রান্সফার করা হয়েছে।
cljk

খুব সুন্দর! Thnx
b3wii

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

1

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

https://github.com/onepremise/SGMS

এই স্ক্রিপ্টটি নিম্নলিখিত ফর্ম্যাটটির সাথে এসভিএনে সঞ্চিত প্রকল্পগুলিকে রূপান্তর করবে:

/trunk
  /Project1
  /Project2
/branches
     /Project1
     /Project2
/tags
 /Project1
 /Project2

এই স্কিমটি জনপ্রিয় এবং পাশাপাশি সমর্থিত:

/Project1
     /trunk
     /branches
     /tags
/Project2
     /trunk
     /branches
     /tags

প্রতিটি প্রকল্প প্রকল্পের নাম দিয়ে সিঙ্ক্রোনাইজ হবে:

Ex: ./migration https://svnurl.com/basepath project1

আপনি যদি পুরো রেপোকে রূপান্তর করতে চান তবে নীচের সিনট্যাক্সটি ব্যবহার করুন:

Ex: ./migration https://svnurl.com/basepath .

0

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


0

উইন্ডোজের জন্য রুবি ইনস্টলারটি ডাউনলোড করুন এবং এটির সাথে সর্বশেষতম সংস্করণ ইনস্টল করুন। আপনার পথে রুবি এক্সিকিউটেবল যুক্ত করুন।

  • Svn2git ইনস্টল করুন
  • মেনু শুরু করুন -> সমস্ত প্রোগ্রাম -> রুবি -> রুবি দিয়ে একটি কমান্ড প্রম্পট শুরু করুন
  • তারপরে “রত্ন ইনস্টল করে এসএনএন 2জিট” লিখে এন্টার দিন

    সাবভার্সন সংগ্রহস্থল স্থানান্তর করুন

  • একটি রুবি কমান্ড প্রম্পট খুলুন এবং সেই ডিরেক্টরিতে যান যেখানে ফাইলগুলি স্থানান্তরিত করতে হয়

    তারপরে svn2git http: // [ডোমেন নাম] / এসএনএন / [সংগ্রহস্থল মূল]

  • প্রকল্পকে গিটে স্থানান্তর করতে কয়েক ঘন্টা সময় নিতে পারে প্রকল্পের কোড আকারের উপর নির্ভর করে।

  • এই বড় পদক্ষেপটি নীচে উল্লিখিত হিসাবে গিট সংগ্রহস্থল কাঠামো তৈরি করতে সহায়তা করে।

    এসভিএন (/ প্রকল্প_সংশ্লিষ্ট) ট্রাঙ্ক -> গিট মাস্টার এসভিএন (/ প্রকল্প_সংশ্লিষ্ট) শাখা -> গিট শাখা এসভিএন (/ প্রকল্প_সংশ্লিষ্ট) ট্যাগ -> গিট ট্যাগ

দূরবর্তী সংগ্রহস্থল তৈরি করুন এবং পরিবর্তনগুলিকে ধাক্কা দিন।


0

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

এটি চলার সাথে সাথে এটি লেখককে খুঁজে পাবেন এবং আপনি এগুলি কেবল গিটহাবের ব্যবহারকারীদের কাছে ম্যাপ করতে পারেন।

আমি এখন এটি কয়েকটি সংগ্রহশালার জন্য ব্যবহার করেছি এবং এটিও বেশ নির্ভুল এবং খুব দ্রুত! 4000 ডলার কমিট করে একটি সংগ্রহস্থলের জন্য এটি 10 ​​মিনিট সময় নিয়েছিল এবং আমার বন্ধুটিকে চার দিন সময় নেওয়ার পরে!


0

বেশ কয়েকটি উত্তর এখানে https://github.com/nirvdrum/svn2git দেখুন তবে বড় সংগ্রহস্থলের জন্য এটি ধীর হতে পারে। এর পরিবর্তে https://github.com/svn-all-fast-export/svn2git ব্যবহার করার চেষ্টা করেছি যা ঠিক একই নামের একটি সরঞ্জাম তবে এসভিএন থেকে গিটে কে-ডি-ই স্থানান্তর করতে ব্যবহৃত হয়েছিল।

এটি সেট আপ করতে সামান্য আরও কাজ কিন্তু যখন রূপান্তরটি নিজেই আমার হয়ে যায় তখন অন্যান্য স্ক্রিপ্টটি কয়েক ঘন্টা সময় ব্যয় করে minutes


0

এই লক্ষ্য অর্জনের জন্য বিভিন্ন পদ্ধতি রয়েছে। আমি তাদের কয়েকটি চেষ্টা করেছি এবং উইন্ডোজ ওএসে ইনস্টল করা গিট এবং এসএনএন দিয়ে সত্যই কাজ করেছি।

পূর্বশর্ত:

  1. উইন্ডোতে গিট (আমি এটি ব্যবহার করেছি) https://git-scm.com/
  2. কনসোল সরঞ্জাম সহ এসএনএন ইনস্টল হয়েছে (আমি কচ্ছপ এসএনএন ব্যবহার করেছি)
  3. আপনার এসভিএন সংগ্রহস্থলের ফাইল ডাম্প করুন। svnadmin dump /path/to/repository > repo_name.svn_dump

চূড়ান্ত লক্ষ্য অর্জনের পদক্ষেপ (ইতিহাস সহ সমস্ত সংগ্রহস্থলকে গিটে স্থানান্তর করুন, প্রথমে স্থানীয় গিট, তারপরে রিমোট)

  1. খালি সংগ্রহস্থলের ডিরেক্টরির REPO_NAME_FOLDER মধ্যে (কনসোল সরঞ্জাম বা টরটয়েজএসভিএন ব্যবহার করে) তৈরি করুন cd REPO_NAME_PARENT_FOLDER, REPO_NAME_PARENT_FOLDER মধ্যে dumpfile.dump করা

  2. svnadmin load REPO_NAME_FOLDER < dumpfile.dump এই অপারেশনটির জন্য অপেক্ষা করুন, এটি দীর্ঘ হতে পারে

  3. এই কমান্ডটি নিঃশব্দ, সুতরাং দ্বিতীয় সেন্টিমিডি উইন্ডোটি খুলুন: svnserve -d -R --root REPO_NAME_FOLDER কেন কেবল ফাইলটি ব্যবহার করবেন না: /// ......? পরবর্তী কমান্ডটি ব্যর্থ হবে Unable to open ... to URL:, উত্তরের জন্য ধন্যবাদ https://stackoverflow.com/a/6300968/4953065

  4. নতুন ফোল্ডারটি SOURCE_GIT_FOLDER তৈরি করুন

  5. cd SOURCE_GIT_FOLDER
  6. গিট এসএনএন ক্লোন এসএনএন: // লোকালহোস্ট / এই অপারেশনের জন্য অপেক্ষা করুন।

অবশেষে, আমরা কী পেলাম?

আমাদের স্থানীয় সংগ্রহস্থলটি পরীক্ষা করতে দিন:

git log

আপনার আগের কমিটগুলি দেখুন? যদি হ্যাঁ - ঠিক আছে

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

git remote add origin https://fullurlpathtoyourrepo/reponame.git
git push -u origin --all # pushes up the repo and its refs for the first time
git push -u origin --tags # pushes up any tags

আমার ক্ষেত্রে, আমার রেপোতে ট্যাগ নেই বলে ট্যাগের কমান্ড দরকার নেই।

শুভকামনা!


0

ট্যাগ বা শাখা ছাড়াই ইতিহাসের সাহায্যে এসএনএন সাবমডিউল / ফোল্ডার 'মাইমডিউল' রূপান্তর করা।

এসএনএন উপেক্ষা করার তালিকাকে ধরে রাখতে পদক্ষেপ 1 পরে উপরের মন্তব্যগুলি ব্যবহার করুন

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