এই উত্তরটি কেবলমাত্র দুটি লিনাক্স কম্পিউটার ব্যবহার করার ক্ষেত্রে প্রযোজ্য [বা সম্ভবত ম্যাকের উপরও কাজ করে? - ম্যাকের উপরে অপ্রচলিত] (একের সাথে অন্যের সাথে সিঙ্ক করা) কারণ আমি এই সিঙ্ক্রোনাইজেশন স্ক্রিপ্টটি ব্যাশে লিখেছি। এটি কেবল চারপাশের একটি মোড়ক git
, তবে এটি নিখরচায় মনে করুন এবং এটিকে ক্রস-প্ল্যাটফর্ম পাইথন সলিউশন বা কোনও কিছুতে রূপান্তর করতে চান যদি আপনি চান
এটি সরাসরি ওপি-র প্রশ্নের উত্তর দেয় না, তবে আমি এটির কাছাকাছি গ্যারান্টি দিচ্ছি যে এটি এই পৃষ্ঠায় আরও অনেক লোকের প্রশ্নের উত্তর দেবে (আমার অন্তর্ভুক্ত রয়েছে, আসলে আমি নিজের সমাধান লেখার আগে এখানে প্রথম এসেছি ), তাই আমি এটি যেভাবেই হোক এখানে পোস্ট করছি।
আমি চাই:
- হালকা ওজন লিনাক্স কম্পিউটারে Eclipse এর মতো শক্তিশালী IDE ব্যবহার করে কোড বিকাশ করুন
- একটি ভিন্ন, আরও শক্তিশালী লিনাক্স কম্পিউটারে এসএসএসের মাধ্যমে কোডটি তৈরি করুন (কমান্ড-লাইন থেকে, গ্রহের অভ্যন্তরের নয়)
আসুন আমি যেখানে প্রথম কম্পিউটারটি লিখি যেখানে আমি "PC1" কোড লিখি (ব্যক্তিগত কম্পিউটার 1), এবং দ্বিতীয় কম্পিউটার যেখানে আমি "PC2" কোডটি তৈরি করি। আমার পিসি 1 থেকে পিসি 2 তে সহজেই সিঙ্ক্রোনাইজ করার জন্য একটি সরঞ্জাম প্রয়োজন। আমি চেষ্টা করেছি rsync
, তবে এটি বড় রেপোর জন্য অত্যন্ত ধীর ছিল এবং প্রচুর পরিমাণে ব্যান্ডউইথ এবং ডেটা নিয়েছিল।
তো, আমি কীভাবে এটি করব? আমার কোন ওয়ার্কফ্লো ব্যবহার করা উচিত? আপনার যদি এই প্রশ্নটিও থাকে তবে আমি যে ওয়ার্কফ্লোটি নিয়ে সিদ্ধান্ত নিয়েছি তা এখানে। আমি git
গিথুবের মতো একটি রিমোট রিপোজিটরির মাধ্যমে পিসি 1 থেকে পিসি 2 তে স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি ব্যবহার করে প্রক্রিয়াটি স্বয়ংক্রিয় করতে বাশ স্ক্রিপ্ট লিখেছিলাম । এখনও অবধি এটি খুব ভালভাবে কাজ করে এবং আমি এতে সন্তুষ্ট। এটি rsync
আমার মতে আরও বেশি নির্ভরযোগ্য, কারণ প্রতিটি পিসি একটি কার্যকরী গিট রেপো বজায় রাখে এবং পুরো সিঙ্কটি করতে অনেক কম ব্যান্ডউইথ ব্যবহার করে, তাই আপনার টনগুলির ডেটা ব্যবহার না করে এটি সেল ফোনের হট স্পটে সহজেই কার্যকরযোগ্য।
সেটআপ:
স্ক্রিপ্টটি পিসি 1 এ ইনস্টল করুন (এই সমাধানটি ধরে নেয় ~ / বিনটি আপনার $ PATH এ রয়েছে):
git clone https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git
cd eRCaGuy_dotfiles/useful_scripts
mkdir -p ~/bin
ln -s "${PWD}/sync_git_repo_from_pc1_to_pc2.sh" ~/bin/sync_git_repo_from_pc1_to_pc2
cd ..
cp -i .sync_git_repo ~/.sync_git_repo
এখন উপরে "~ / .sync_git_repo" ফাইলটি সম্পাদনা করুন এবং আপনার কেস ফিট করার জন্য এর পরামিতিগুলি আপডেট করুন। এতে রয়েছে প্যারামিটারগুলি এখানে:
# The git repo root directory on PC2 where you are syncing your files TO; this dir must *already exist*
# and you must have *already `git clone`d* a copy of your git repo into it!
# - Do NOT use variables such as `$HOME`. Be explicit instead. This is because the variable expansion will
# happen on the local machine when what we need is the variable expansion from the remote machine. Being
# explicit instead just avoids this problem.
PC2_GIT_REPO_TARGET_DIR="/home/gabriel/dev/eRCaGuy_dotfiles" # explicitly type this out; don't use variables
PC2_SSH_USERNAME="my_username" # explicitly type this out; don't use variables
PC2_SSH_HOST="my_hostname" # explicitly type this out; don't use variables
গিট আপনার রেপো ক্লোন করুন আপনি পিসি 1 এবং পিসি 2 উভয় সিঙ্ক করতে চান।
- আপনার এসএস কীগুলি পিসি 1 এবং পিসি 2 উভয়ই দূরবর্তী রেপোতে চাপ দিতে এবং টানতে সক্ষম হবেন তা নিশ্চিত করুন। এখানে কিছু সহায়ক লিঙ্ক রয়েছে:
- https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh
- https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
- আপনার এসএস কীগুলি পিসি 1 থেকে পিসি 2 এ এসএসএসে সেট আপ করা আছে তা নিশ্চিত করুন।
এখন cd
পিসি 1 তে গিট রেপোর মধ্যে যে কোনও ডিরেক্টরিতে প্রবেশ করুন এবং চালান:
sync_git_repo_from_pc1_to_pc2
এটাই! প্রায় 30 সেকেন্ড পরে সবকিছু পিসি 1 থেকে পিসি 2 তে যাদুবিদ্যার সাথে সিঙ্ক করা হবে এবং এটি আপনার ডিস্কে এবং কোন কম্পিউটারে এটি কী করছে এবং এটি কোথায় চলছে তা আপনাকে জানানোর জন্য পুরো সময় মুদ্রণ করবে। এটিও নিরাপদ, কারণ এটি অনাকাঙ্ক্ষিত বা আপত্তিজনক কিছু মুছে দেয় না। পরিবর্তে প্রথম এটি ব্যাক আপ! কীভাবে এটি কাজ করে তার জন্য নীচে আরও পড়ুন।
এই স্ক্রিপ্টটি ব্যবহার করার প্রক্রিয়াটি এখানে (যেমন: এটি আসলে কী করছে)
- পিসি 1 থেকে: এটি পিসি 1 এ কোনও অনির্ধারিত পরিবর্তন আছে কিনা তা পরীক্ষা করে দেখেছে। যদি তা হয় তবে এটি বর্তমান শাখায় অস্থায়ী প্রতিশ্রুতিবদ্ধ হয়ে তাদের প্রতিশ্রুতিবদ্ধ। এরপরে এটি তাদের জোর করে একটি রিমোট SYNC শাখায় ঠেলে দেয়। তারপরে এটি স্থানীয় শাখায় এটির অস্থায়ী প্রতিশ্রুতিটি অস্বীকার করে, তারপরে এটি স্থানীয় গিট রেপোকে ঠিক কীভাবে ফিরিয়ে দেয় আপনি যখন স্ক্রিপ্ট বলেছিলেন সেই সময়ে যে কোনও ফাইল মঞ্চস্থ হয়েছিল তা মঞ্চস্থ করে by এরপরে, এটি
rsync
স্ক্রিপ্টটির অনুলিপি পিসি 2-তে করে দেয় এবং একটি করেssh
পিসি 2-তে জমা হয় এবং পিসি 2 কে কেবল একটি পিসি 2 স্টাফ করার জন্য একটি বিশেষ বিকল্প দিয়ে স্ক্রিপ্টটি চালনা করতে বলে call
- এখানে পিসি 2 কী করে তা এখানে: এটি রেপোতে আসে
cd
এবং কোনও স্থানীয় অনির্ধারিত পরিবর্তন উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখুন । যদি তা হয়, তবে এটি বর্তমান শাখার বাইরে একটি নতুন ব্যাকআপ শাখা তৈরি করে (নমুনার নাম:। এখন, এটি SYNC শাখা পরীক্ষা করে, এটি স্থানীয় মেশিনে ইতিমধ্যে না থাকলে দূরবর্তী সংগ্রহস্থল থেকে এটি টানছে। তারপরে, এটি আনবে দূরবর্তী সংগ্রহস্থলের সর্বশেষ পরিবর্তনগুলি, এবং স্থানীয় SYNC সংগ্রহস্থলকে রিমোট SYNC সংগ্রহস্থলের সাথে মেলে জোর করতে কঠোর রিসেট করে। এটি আপনি একটি "হার্ড টান" বলতে পারেন It এটি নিরাপদ, কারণ আমরা ইতিমধ্যে যে কোনও অনির্দিষ্ট পরিবর্তনকে ব্যাক আপ করেছি we পিসি 2 স্থানীয়ভাবে ছিল, তাই কিছুই হারিয়ে যায় না!my_branch_SYNC_BAK_20200220-0028hrs-15sec
<- নোটিশটি হ'ল ইয়াইওয়াইএমএমডিডি-এইচএইচএমএইচএমএস - এসএসসি), এবং সেই শাখায় যে কোনও অনির্দিষ্ট পরিবর্তনকে প্রতিশ্রুতিবদ্ধ বার্তা যেমন ডিও ব্যাকআপ অফ অল অফ দিয়ে সমস্ত কিছু সম্পাদন করে its পিসি 2 তে অসমাপ্ত পরিবর্তনসমূহ (টার্গেট পিসি / বিল্ড মেশিন)
- এটাই! স্ক্রিপ্টটি আপনার জন্য সমস্ত স্বয়ংক্রিয় প্রতিশ্রুতিবদ্ধ এবং স্টাফ হ্যান্ডেল করায় আপনি ক্লিন ওয়ার্কিং ডিরেক্টরিগুলি নিশ্চিত না করেই এখন পিসি 1 থেকে পিসি 2 তে একটি নিখুঁত অনুলিপি তৈরি করেছেন! এটি দ্রুত এবং বিশাল সংগ্রহস্থলগুলিতে খুব ভাল কাজ করে। অন্য মেশিন তৈরি বা পরীক্ষার সময় সহজেই আপনার সেলফোন থেকে ওয়াইফাই হট স্পট জুড়ে আপনার কম্পিউটারের পছন্দের যে কোনও আইডিই ব্যবহার করার প্রয়োজন হয় যদি প্রয়োজন হয়, এমনকি যদি সংগ্রহস্থল কয়েক ডজন গিগাবাইট এবং আপনি সময় পান এবং সংস্থান-সীমাবদ্ধ।
সম্পদ:
- পুরো প্রকল্প: https://github.com/E લેક્ટricRCAircraftGuy/ eRCaGuy_dotfiles
- এই প্রকল্পের মধ্যেই সোর্স কোডটিতে আরও অনেক লিঙ্ক এবং রেফারেন্স দেখুন।
- "হার্ড টান" কীভাবে করব , যেমন আমি এটি বলি: স্থানীয় ফাইলগুলি ওভাররাইট করতে কীভাবে আমি "গিট টান" কে জোর করব?
সম্পর্কিত:
- কম্পিউটারের মধ্যে গিট রিপোজিটরি সিঙ্ক হয়, যখন ঘোরাফেরা করে?