আমারও এটির দরকার ছিল, এবং বোম্বের উত্তর + প্রায় কিছু ফিডিংয়ের সাহায্যে, আমি এটি কাজ করে চলেছি। এই রেসিপিটি এখানে:
গিট আমদানি করুন -> সাবভার্সন
1. cd /path/to/git/localrepo
2. svn mkdir --parents protocol:///path/to/repo/PROJECT/trunk -m "Importing git repo"
3. git svn init protocol:///path/to/repo/PROJECT -s
4. git svn fetch
5. git rebase origin/trunk
5.1. git status
5.2. git add (conflicted-files)
5.3. git rebase --continue
5.4. (repeat 5.1.)
6. git svn dcommit
# 3 এর পরে আপনি এরকম একটি ক্রিপ্টিক বার্তা পাবেন:
ইউআরএল এর উচ্চ স্তরের ব্যবহার: protocol:///path/to/repo/PROJECT => protocol:///path/to/repo
কেবল তা উপেক্ষা করুন।
যখন আপনি # 5 রান, আপনি পারে দ্বন্দ্ব পেতে। "সরল" অবস্থায় ফাইল পুনরায় চালু করে এবং পুনরায় চালু করার মাধ্যমে এগুলি সমাধান করুন। শেষ পর্যন্ত, আপনি সম্পন্ন করা হবে; তারপরে এসভিএন সংগ্রহস্থলটিতে আবার সিঙ্ক করুনdcommit
। এখানেই শেষ.
সিঙ্কে সংগ্রহস্থল রাখা
আপনি এখন নিম্নলিখিত কমান্ডগুলি ব্যবহার করে এসভিএন থেকে গিটতে সিঙ্ক্রোনাইজ করতে পারেন:
git svn fetch
git rebase trunk
এবং গিট থেকে এসভিএন-তে সিঙ্ক্রোনাইজ করতে, ব্যবহার করুন:
git svn dcommit
চূড়ান্ত নোট
সরাসরি সংগ্রহস্থলটিতে প্রয়োগের আগে আপনি স্থানীয় অনুলিপিটিতে এটি ব্যবহার করে দেখতে চাইতে পারেন। আপনি নিজের গিট সংগ্রহস্থলের একটি অনুলিপি অস্থায়ী স্থানে রাখতে পারেন; সহজেই ব্যবহার করুন cp -r
, যেমন সমস্ত ডেটা সংগ্রহস্থলটিতে থাকে। এরপরে আপনি একটি ফাইল-ভিত্তিক পরীক্ষামূলক ভাণ্ডার সেট আপ করতে পারেন:
svnadmin create /home/name/tmp/test-repo
এবং একটি ওয়ার্কিং অনুলিপি পরীক্ষা করে দেখুন:
svn co file:///home/name/tmp/test-repo svn-working-copy
এটি আপনাকে দীর্ঘস্থায়ী পরিবর্তনগুলি করার আগে জিনিসগুলির সাথে চারপাশে খেলতে দেয়।
সংযোজন: আপত্তি থাকলে git svn init
যদি আপনি দুর্ঘটনাক্রমে git svn init
ভুল ইউআরএল নিয়ে চলে যান এবং আপনি নিজের কাজের ব্যাকআপ নেওয়ার পক্ষে যথেষ্ট স্মার্ট না হন (জিজ্ঞাসা করবেন না ...), আপনি আবার একই কমান্ডটি চালাতে পারবেন না। তবে আপনি জারি করে পরিবর্তনগুলি পূর্বাবস্থায় ফিরিয়ে নিতে পারেন:
rm -rf .git/svn
edit .git/config
এবং বিভাগের [svn-remote "svn"]
অংশটি সরান ।
তারপরে আপনি git svn init
নতুনভাবে চালাতে পারেন ।