গিট এবং ড্রপবক্স একসাথে কার্যকরভাবে ব্যবহার করছেন?


1132

আমি কীভাবে গিট এবং ড্রপবক্স একসাথে কার্যকরভাবে ব্যবহার করব ?



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

12
আমি নিশ্চিত না যে আপনার সংস্করণ অপ্রয়োজনীয়তা বিদ্রূপাত্মক, তবে এটি সম্ভবত বেশ কার্যকর
সিলেসডাভিস

2
এই প্রশ্নটি অস্পষ্ট। এই সরঞ্জামগুলি "কার্যকরভাবে" একসাথে ব্যবহার করার অর্থ কী? এটি খুব বিস্তৃত এবং সম্ভবত মতামতযুক্ত উত্তর উত্পন্ন করতে পারে।

3
আরে আপনি দয়া করে আমার উত্তরটিকে সঠিক হিসাবে বিবেচনা করতে পারেন: stackoverflow.com/a/32215708/589667 । আমি আমার উত্তরে উল্লেখ করেছি এই লাইব্রেরিটি ড্রপবক্স বিকাশকারীদের দ্বারা গিটকে ড্রপবক্সে ব্যবহার করতে সহায়তা করার জন্য নির্মিত একটি অফিসিয়াল সরঞ্জাম।
ক্লু

উত্তর:


1401

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

সেটআপ হ'ল এরকম কিছু:

~/project $ git init
~/project $ git add .
~/project $ git commit -m "first commit"
~/project $ cd ~/Dropbox/git

~/Dropbox/git $ git init --bare project.git
~/Dropbox/git $ cd ~/project

~/project $ git remote add origin ~/Dropbox/git/project.git
~/project $ git push -u origin master

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

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


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

162
@ ডুবেক: আপনি সম্ভবত ভাগ করা বেয়ার রেপোকে দূষিত করবেন। এই দৃষ্টিভঙ্গি কেবলমাত্র একটি ছোট দলের জন্য উপযুক্ত (আমার ক্ষেত্রে দুটি) যেখানে লোকেরা কেবল তাদের ঘনক্ষেত্রের দেয়াল ধরে চিৎকার করতে পারে: "আরে! কেউ চাপ দেয় না! আমি এখন চাপ দিচ্ছি না!"!
এটস গোলাল

50
@ এটেস: কমপক্ষে গিটকে বিকেন্দ্রীকরণ করা হয়েছে, সুতরাং যদি আপনি কোনও জিনিসকে দূষিত করার ব্যবস্থা করেন তবে আপনি এটির কারওর স্থানীয় অনুলিপি থেকে পুনরুদ্ধার করতে পারেন। আপনার যদি একটি বড় দল থাকে তবে সম্ভাবনা রয়েছে যে কোনও জায়গায় হোস্ট করা রেপোর জন্য পর্যাপ্ত নগদ রয়েছে।
rdrey

75
কমান্ডের এই সঠিক ক্রমটি ব্যবহার করতে আমি এই পৃষ্ঠায় পাঁচবারেরও বেশি ফিরে এসেছি। আমি তাদের কখনই মুখস্ত করবো না, তবে তাদের সরবরাহ করার জন্য ধন্যবাদ!
জেরেমি ম্যাক

32
@ জো: এটি যথেষ্ট ঘেটো নয়।
এটস গোলাল

126

এটি করার সঠিক উপায় হ'ল গিট-রিমোট-ড্রপবক্স: https://github.com/anishathalye/git-remote-rodbox

ড্রপবক্সে আপনার নিজের খালি রেপো তৈরি করা অনেক সমস্যার সৃষ্টি করে। আনিস (গ্রন্থাগারের স্রষ্টা) এটিকে সর্বোত্তমভাবে ব্যাখ্যা করেছেন :

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

এই কাজটি সঠিকভাবে করার জন্য Traতিহ্যবাহী গিট সার্ভার সাইডে রান কোডটি রিমোট করে, তবে আমরা এটি করতে পারি না।

সমাধান: এটি সঠিকভাবে সমাধান করা সম্ভব। গিট উইথ ড্রপবক্স ব্যবহার করা এবং safetyতিহ্যবাহী গিট রিমোট হিসাবে একই সুরক্ষা এবং ধারাবাহিকতা গ্যারান্টি থাকতে পারে, এমনকি সেখানে একাধিক ব্যবহারকারী এবং একযোগে কাজ করা হয়!

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

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


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

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

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

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

2
শুধু জানতে আগ্রহী যদি Git-দূরবর্তী-ড্রপবক্স ক্রস-প্ল্যাটফর্ম হচ্ছে ... আমি এটা পাইথন ব্যবহার দেখতে, এবং আমি অন্য কিছু পাইথন জিনিস জানেন ড্রপবক্স জন্য না ক্রস প্ল্যাটফর্ম, OS X এর উপর উদাহরণস্বরূপ কমান্ড লাইন কাপড় সামঞ্জস্যপূর্ণ নয়।
মাইকেল

89

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

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

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

ড্রপবক্সের শীর্ষে গিট / মার্কুরিয়াল চালানো ঝুঁকি ছাড়া কিছুই যুক্ত করে না। এটা করবেন না।


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

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

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

5
+1 আপনি যদি আপনার ভাণ্ডারগুলিকে জনসাধারণ্যে হোস্ট করতে না চান, বিটবকেট ব্যবহার করুন , 5 টির বেশি ব্যবহারকারীদের জন্য ব্যক্তিগত রেপো বিনামূল্যে।
খ্রিস্টান স্পেচট

একটি উইন্ডোজ মেশিন এবং একটি ওএসএক্স মেশিনের মধ্যে একটি জিনিস আমি লক্ষ্য করেছি যে ফাইল অনুমতিগুলি বিভিন্ন সমস্যার কারণ হতে পারে। আপনি গিটের ব্যবহারের মাধ্যমে অনুমতিগুলি বন্ধ করতে পারেন: "গিট কনফিগারেশন কোর.ফাইলমড মিথ্যা"
ডিভডিআরসিআর

16

ড্রপবক্স ব্যবহার করে ছোট দলগুলির প্রতি শ্রদ্ধা সহ:

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

তারপরে আপনি যদি কেন্দ্রিয়ায়িত 'মাইনলাইন' চান, আপনি একজন বিকাশকারীকে তার নিজের রেপো থেকে সমস্ত ধাক্কা সামলে নিতে পারেন।


1
এত বড়! এছাড়াও, একাধিক লেখার থেকে রেপো দুর্নীতি রক্ষা করতে আপনি সহজেই একাধিক রেপো তৈরি করতে পারেন এবং কেবল তাদের .git ফোল্ডারগুলিকে সিঙ্ক করতে পারেন! আপনার একটি মুহুর্তের মধ্যে যা দরকার তা হ'ল কাঙ্ক্ষিত উত্স থেকে টানুন! দুর্দান্ত পি-টু-পি মানুষ! আপনি বিকেন্দ্রিত গিটের দর্শন বুঝতে পারেন!
ব্রায়ান হক

16

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

#!/bin/sh
# Script by Eli Delventhal
# Creates Git projects for file folders by making the origin Dropbox. You will need to install Dropbox for this to work.

# Not enough parameters, show help.
if [ $# -lt 1 ] ; then

cat<<HELP
projects_to_git.sh -- Takes a project folder and creates a Git repository for it on Dropbox

USAGE:
    ./projects_to_git.sh file1 file2 ..

EXAMPLES:
    ./projects_to_git.sh path/to/MyProjectDir
        Creates a git project called MyProjectDir on Dropbox

    ./projects_to_git.sh path/to/workspace/*
        Creates a git project on Dropbox for every folder contained within the workspace directory, where the project name matches the folder name

HELP
    exit 0
fi

# We have enough parameters, so let's actually do this thing.

START_DIR=$(pwd)

# Make sure we have a connection to Dropbox
cd ~
if [ -s 'Dropbox' ] ; then
    echo "Found Dropbox directory."
    cd Dropbox
    if [ -s 'git' ] ; then
        echo "    Dropbox Git directory found."
    else
        echo "    Dropbox Git directory created."
        mkdir git
    fi
else
    echo "You do not have a Dropbox folder at ~/Dropbox! Install Dropbox. Aborting..."
    exit 0
fi

# Process all directories matching the passed parameters.
echo "Starting processing for all files..."
for PROJ in $*
do
    if [ -d $PROJ ] ; then
        PROJNAME=$(basename $PROJ)
        echo "  Processing $PROJNAME..."

        # Enable Git with this project.
        cd $PROJ
        if [ -s '.git' ] ; then
            echo "    $PROJNAME is already a Git repository, ignoring..."
        else
            echo "    Initializing Git for $PROJNAME..."
            git init -q
            git add .
            git commit -m "Initial creation of project." -q

            # Make the origin Dropbox.

            cd ~/Dropbox/git
            if [ -s $PROJNAME ] ; then
                echo "    Warning! $PROJNAME already exists in Git! Ignoring..."
            else
                echo "    Putting $PROJNAME project on Dropbox..."
                mkdir $PROJNAME
                cd $PROJNAME
                git init -q --bare
            fi

            # Link the project to the origin
            echo "    Copying local $PROJNAME to Dropbox..."
            cd $PROJ
            git remote add origin "~/Dropbox/git/$PROJNAME"
            git push -q origin master
            git branch --set-upstream master origin/master
        fi
    fi
done

echo "Done processing all files."
cd $START_DIR

15

আমি মনে করি না যে গিট এবং ড্রপবক্স ব্যবহার করার উপায় ... কেবল দুজনের বৈশিষ্ট্য সম্পর্কে চিন্তা করুন:

git:

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

ড্রপবক্স:

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

এবং আপনি যদি আপনার কয়েকটি ফাইল ভাগ করে নিয়ে চিন্তিত হন তবে সেগুলি কেন সিফার করবেন না? এবং তারপরে আপনি গিট থেকে ড্রপবক্সের সবচেয়ে বড় সুবিধা পেতে পারেন, তা হল, সরকারী এবং ব্যক্তিগত ফাইল থাকা ...


ড্রপবক্স একটি কেন্দ্রীয় রেপো জন্য মাত্র একটি ভাল বিকল্প। যদি ভাগ করা ফোল্ডারে রাখা হয় তবে এটি গোষ্ঠীগুলির জন্যও কাজ করে।
ম্যাক

হ্যাঁ, তবে গিটের মতো আপনার মতো মার্জিং বৈশিষ্ট্যগুলি থাকবে না, আসলে যদি কেউ আপনার মতো একই ফাইলটি সম্পাদনা করে এবং তিনি আপনার পরে ফাইলটি সংরক্ষণ করে তবে আপনার পরিবর্তনগুলি হারিয়ে যাবে, আপনি ওয়েব ইন্টারফেসে না গিয়ে ডাউনলোড না করে পুরানো সংস্করণ (আপনার সংস্করণ)
কোयोোট 21

8
এটা ভুল. ড্রপবক্স বিরোধগুলি বাদ দেয় না। এটি একটি সম্পাদনার ফাইলের নামটি ম্যাঙ্গেল করে এবং অন্যটিকে ধারাবাহিকতার জন্য ব্যবহার করে। আপনি চাইলে এগুলি ম্যানুয়ালি নিজেই মার্জ করতে পারেন। এটি একটি ভাল আপস, এবং ডেটা হারাবে না। dropbox.com/help/36
ক্লুলেস

5
হ্যাঁ তবে এটি যেহেতু কোড সম্পর্কিত, তাই আমি যত বেশি কোড উত্পন্ন করতে পারছি সেগুলিতে কম পরিমাণে ফাইলগুলি সংশ্লেষ করাতে ব্যয় করা হবে এবং একটি সাধারণ কোডবাসে এটি প্রকল্পের মাত্রার উপর নির্ভর করে এক সময়ে শত শত বিবাদ সৃষ্টি করতে পারে এবং এটি একটি দুঃস্বপ্ন হতে পারে উইনমার্গের মতো একত্রীকরণ সরঞ্জাম (বা অন্য কিছু) এর সাহায্যে এমনকি একে একে একীভূত করুন।
কোयोোট

15

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

একবার কনফিগার হয়ে গেলে এটি অন্য গিট রিমোটের মতোই গিট রিমোট সেটআপ করতে দেয়।

git clone "dropbox::/path/to/repo"
git remote add origin "dropbox::/path/to/repo"

2
ভাল লাগবে যদি কোনও মোড সুপারথ্রেডের অধীনে স্ট্যাকেক্সচেঞ্জের সমস্ত গিট-সহ-ড্রপবক্স প্রশ্নগুলিকে একীভূত করে রাখে যা সর্বশেষে সর্বশেষ জিনিসগুলির উল্লেখ করে।
ব্লেয়ার হাউটন

9

এনক্রিপ্ট করা দূরবর্তী ব্যাকআপগুলির জন্য আমি মার্চুরিয়াল (বা গিট) + ট্রুক্রিপট + ড্রপবক্স ব্যবহার করি ।

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

দ্বিতীয়ত, একঘেয়েমি এনক্রিপ্ট হওয়া ধারকটি কেবল সুরক্ষা যোগ করে না, এটি সংগ্রহস্থলের দুর্নীতির সম্ভাবনাও হ্রাস করে ।

সতর্কতা: তবে ড্রপবক্স চলাকালীন আপনাকে ধারকটি না বসানো সম্পর্কে খুব সাবধানতা অবলম্বন করতে হবে। 2 টি পৃথক ক্লায়েন্ট যদি বিভিন্ন ধারককে ধারকটিতে চেক-ইন করে তবে দ্বন্দ্বগুলি সমাধান করার জন্যও এটি ব্যথা হতে পারে। সুতরাং, এটি কেবলমাত্র কোনও একক ব্যক্তির পক্ষে এটি ব্যাকআপের জন্য ব্যবহার করা, কোনও দলের জন্য নয় practical

সেটআপ:

  • ট্রুইক্রিপ কনটেইনার তৈরি করুন (একাধিক গিগাবাাইট ভাল আছে)
  • ট্রুক্রিপট পছন্দসমূহের অধীনে, চেক করুন preserve modification timestamp * নির্বাচন না করে চেক করুন।
  • ড্যান দ্বারা উল্লিখিত একটি রেপো তৈরি করুন ( https://stackoverflow.com/a/1961515/781695 )

ব্যবহার:

  • ড্রপবক্স প্রস্থান করুন
  • পাত্রে মাউন্ট করুন, আপনার পরিবর্তনগুলি ধাক্কা, আনমাউন্ট
  • ড্রপবক্স চালান

PS টি preserve modification timestampড্রপবক্সটি আনচেক করে ফাইলটি সংশোধন করা হয়েছে এবং এটি সিঙ্ক করা উচিত। নোট করুন যে ধারকটি মাউন্ট করলে আপনি এতে কোনও ফাইল পরিবর্তন না করলেও টাইমস্ট্যাম্পটি পরিবর্তন করে। যদি আপনি এটি না চান তবে কেবলমাত্র ভলিউমটিকে মাউন্ট করুনread-only


এটি যদি ম্যাকোস এনক্রিপ্ট করা .dmg ফাইল চিত্র ব্যবহার করে আলাদা হয় তবে সিঙ্কের সময়টি কি পরিবর্তনের সাথে মোটামুটি সমানুপাতিক হবে?
আইব্রাম

@ আইব্রাম দুঃখিত, আমি এটি একটি .dmg ফাইল দিয়ে চেষ্টা করিনি
ব্যবহারকারী ২

7

আমি ড্যান ম্যাকনেভিনের উত্তরটি পছন্দ করি! আমি এখন গিট এবং ড্রপবক্স একসাথে ব্যবহার করছি এবং আমি আমার .বাশ_প্রফাইলে বেশ কয়েকটি এলিয়াস ব্যবহার করছি যাতে আমার কর্মপ্রবাহটি দেখতে দেখতে:

~/project $ git init
~/project $ git add .
~/project $ gcam "first commit"
~/project $ git-dropbox

এগুলি আমার উপনাম:

alias gcam='git commit -a -m'
alias gpom='git push origin master'
alias gra='git remote add origin'
alias git-dropbox='TMPGP=~/Dropbox/git/$(pwd | awk -F/ '\''{print $NF}'\'').git;mkdir -p $TMPGP && (cd $TMPGP; git init --bare) && gra $TMPGP && gpom'

আমি সম্ভবত সর্বশেষ জিনিসটি একটি উপন্যাস হিসাবে ব্যবহার করব না, বরং শেল স্ক্রিপ্ট। অন্যথায়, আমি এটি খুব পছন্দ করি। বেতনের ব্যবহারের জন্য অতিরিক্ত ক্রেডিট।
pauljohn32

6

আমরা একটি শেয়ার ফোল্ডারে এই পদ্ধতিটি (ড্রপবক্সে একটি খালি সংগ্রহস্থান তৈরি) ব্যবহার করি ।

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

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


81
কেউ গুগল ওয়েভ ব্যবহার করছেন?
ক্রিস্টোফার জনসন

6

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


আমার সাথে একই সমস্যা ছিল
টোম্বা

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

6

এছাড়াও একটি ওপেন সোর্স প্রকল্প রয়েছে (ক্রস প্ল্যাটফর্মের একটি সংকলন [লিনাক্স, ম্যাক, উইন] স্ক্রিপ্টস) যা মুষ্টিমেয় কমান্ডের (৩-৪) সাহায্যে সংগ্রহস্থল পরিচালনার সমস্ত কৌতুকপূর্ণ বিবরণ দেয়।

https://github.com/karalabe/gitbox/wiki

নমুনা ব্যবহার হ'ল:

$ gitbox create myapp
Creating empty repository...
Initializing new repository...
Repository successfully created.

$ gitbox clone myapp
Cloning repository...
Repository successfully cloned.

যার পরে স্বাভাবিক গিট ব্যবহার:

$ echo “Some change” > somefile.txt
$ git add somefile.txt
$ git commit –m “Created some file”
$ git push

পূর্ণ কমান্ড রেফারেন্স এবং টিউটোরিয়ালগুলির জন্য প্রকল্প উইকি এবং ম্যানুয়ালগুলি দেখুন।


4

আমি আমার অ-গিথুব রেপো ড্রপবক্সে সঞ্চয় করি। আমি যে সতর্কতার মধ্যে দৌড়েছি তা পুনরায় ইনস্টলের পরে সিঙ্ক হচ্ছে। ড্রপবক্স বড় ফাইলগুলিতে যাওয়ার আগে প্রথমে ক্ষুদ্রতম ফাইলগুলি ডাউনলোড করবে। আপনি যদি রাত্রে শুরু করেন এবং উইকএন্ডের পরে ফিরে আসেন তবে কোনও সমস্যা নয় :-)

আমার থ্রেড - http://forums.dropbox.com/topic.php?id=29984&replies=6


4

এখন ২০১৪ সালে, আমি সমস্যা ছাড়াই প্রায় দেড় বছর ধরে গিট এবং ড্রপবক্স ব্যবহার করে আসছি। কিছু বিষয় যদিও:

  • ড্রপবক্স ব্যবহার করে আমার সমস্ত মেশিনগুলি উইন্ডোজে, বিভিন্ন সংস্করণে (7 থেকে 8) + 1 ম্যাক।
  • আমি অন্য কারও সাথে ভান্ডারটি ভাগ করি না, তাই আমি এটিকে পরিবর্তন করার একমাত্র ব্যক্তি।
  • git push রিমোট রিপোজিটরিতে ঠেলাঠেলি করে, যাতে এটি যদি কখনও দুর্নীতিগ্রস্থ হয় তবে আমি সহজেই এটি পুনরুদ্ধার করতে পারি।
  • আমি alias লেখা তৈরি করতে ছিল C:\Usersসঙ্গে mklink /D link targetকারণ কিছু লাইব্রেরি পরম অবস্থানে উল্লেখ করা হয়েছে।

3

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

#!/bin/bash

# Usage
usage() {
    echo "Usage: ${0} -m [ master-branch-directory ] -r [ remote-branch-directory ] [ project-name ]"
    exit 1
}

# Defaults
defaults() {
    masterdir="${HOME}/Dropbox/git"
    remotedir="${PWD}"
    gitignorefile="# OS generated files #\n\n.DS_Store\n.DS_Store?\n.Spotlight-V100\n.Trashes\nehthumbs.db\nThumbs.db"
}

# Check if no arguments
if [ ${#} -eq 0 ] ; then
    echo "Error: No arguments specified"
    usage
fi

#Set defaults
defaults

# Parse arguments
while [ ${#} -ge 1 ]; do
    case "${1}" in
        '-h' | '--help' ) usage ;;
        '-m' )
            shift
            masterdir="${1}"
            ;;
        '-r' )
            shift
            remotedir="${1}"
            ;;
        * )
            projectname="${1##*/}"
            projectname="${projectname%.git}.git"
            ;;
    esac
    shift
done

# check if specified directories and project name exists
if [ -z "${projectname}" ]; then
    echo "Error: Project name not specified"
    usage
fi

if [ ! -d "${remotedir}" ]; then
    echo "Error: Remote directory ${remotedir} does not exist"
    usage
fi

if [ ! -d "${masterdir}" ]; then
    echo "Error: Master directory ${masterdir} does not exist"
    usage
fi

#absolute paths
remotedir="`( cd \"${remotedir}\" && pwd )`"
masterdir="`( cd \"${masterdir}\" && pwd )`"

#Make master git repository
cd "${masterdir}"
git init --bare "${projectname}"

#make local repository and push to master
cd "${remotedir}"
echo -e "${gitignorefile}" > .gitignore # default .gitignore file
git init
git add .
git commit -m "first commit"
git remote add origin "${masterdir}/${projectname}"
git push -u origin master

#done
echo "----- Locations -----"
echo "Remote branch location: ${remotedir}"
echo "Master branch location: ${masterdir}"
echo "Project Name: ${projectname}"

স্ক্রিপ্টটির জন্য কেবলমাত্র একটি প্রকল্পের নাম প্রয়োজন। এটি একটি গিট সংগ্রহস্থল তৈরি করবে~/Dropbox/git/ নির্দিষ্ট নামের অধীনে করবে এবং বর্তমান ডিরেক্টরিটির সম্পূর্ণ বিষয়বস্তুকে সদ্য নির্মিত উত্সের মাস্টার শাখায় ঠেলে দেবে। যদি একাধিক প্রকল্পের নাম দেওয়া হয় তবে ডান-সর্বাধিক প্রকল্পের নাম যুক্তি ব্যবহার করা হবে।

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


3

অন্য পদ্ধতি:

@ ড্যান উত্তর সহ এখন পর্যন্ত সমস্ত উত্তর যা সর্বাধিক জনপ্রিয় করে একটি পরিষেবা ব্যবহার করার পরিবর্তে একটি ভাগ করা সংগ্রহস্থলকে কেন্দ্রীভূত করতে ড্রপবক্স ব্যবহার করার ধারণাকে করুন

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

কীভাবে এই পদক্ষেপগুলি রয়েছে:

  1. প্রকল্প ডিরেক্টরিতে একটি খালি .gitডিরেক্টরি তৈরি করে (যেমন mkdir -p myproject/.git)

  2. .gitড্রপবক্সে ডিরেক্টরি আন-সিঙ্ক করুন । যদি ড্রপবক্স অ্যাপ্লিকেশন ব্যবহার করে: পছন্দগুলি, সিঙ্কে যান এবং "সিঙ্ক করতে ফোল্ডারগুলি চয়ন করুন" তে যান, যেখানে .gitডিরেক্টরিটি চিহ্নমুক্ত করা দরকার। এটি .gitডিরেক্টরিটি সরিয়ে ফেলবে ।

  3. git initপ্রকল্প ডিরেক্টরিতে চালান

এটি .gitইতিমধ্যে বিদ্যমান থাকলে এটি কাজ করে , তবে কেবল পদক্ষেপ 2 করুন D ড্রপবক্স যদিও ওয়েবসাইটটিতে গিট ফাইলগুলির একটি অনুলিপি রাখবে।

দ্বিতীয় ধাপ ড্রপবক্সকে গিট সিস্টেম কাঠামো সিঙ্ক না করার কারণ করবে, যা এই পদ্ধতির জন্য পছন্দসই ফলাফল।

কেন কেউ এই পদ্ধতি ব্যবহার করবে?

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

  • ডিভাইসগুলির মধ্যে সিঙ্ক করার সময় ড্রপবক্সে কোনও কিছু স্ক্রু আপ হয়ে যায় git statusএবং git diffজিনিসগুলি বাছাই করতে সুবিধা হবে।

  • এটি ড্রপবক্স অ্যাকাউন্টে স্থান বাঁচায় (পুরো ইতিহাস সেখানে সংরক্ষণ করা হবে না)

  • এটি @ ডাবের উত্তরের মন্তব্যে @ ডুবেক এবং @ এটসের উত্থাপিত উদ্বেগ এবং অন্য উত্তরে @ ক্লু দ্বারা উদ্বেগগুলি এড়িয়ে চলেছে ।

অন্য কোথাও রিমোটের অস্তিত্ব (গিথুব ইত্যাদি) এই পদ্ধতির সাথে ভাল কাজ করবে।

বিভিন্ন শাখায় কাজ করা কিছু বিষয় নিয়ে আসে, সেগুলির যত্ন নেওয়া দরকার:

  • একটি সম্ভাব্য সমস্যা হ'ল ড্রপবক্স (অকারণে?) যখন বিভিন্ন শাখা পরীক্ষা করে দেখেন তখন সম্ভাব্য অনেকগুলি ফাইল সিঙ্ক করে।

  • যদি দুই বা ততোধিক ড্রপবক্স সিঙ্ক হওয়া ডিভাইসের বিভিন্ন শাখা পরীক্ষা করা থাকে তবে উভয় ডিভাইসে অ-প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি হারাতে পারে,

এই সমস্যাগুলির চারপাশের একটি উপায় হ'ল git worktreeশাখা চেকআউটগুলি পৃথক ডিরেক্টরিতে রেখে দেওয়া।


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

দ্রুত অনুসরণ, বর্তমান ড্রপবক্স আচরণ ভিন্ন is কেবল ড্রপবক্সকে সিঙ্ক না করার কথা সরানো এবং বলা মানে বিপরীত, মেঘে থাকে, স্থানীয় থেকে সরানো। তবে সমাধান সহ একটি সুপারভাইজারের উত্তর রয়েছে। superuser.com/a/1527145/109561 আমার ক্ষেত্রে (ম্যাকের ক্ষেত্রে) নীচে ফাইলটিকে উপেক্ষা করার জন্য পতাকাঙ্কিত করে xattr -w com.dropbox.ignored 1 /path/to/somewhere,।
ওয়াগারি

3

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

[alias]
        bundle-push = "!cd \"${GIT_PREFIX:-.}\" && if path=\"$(git config remote.\"$1\".url)\" && [ \"${path:0:1}\" = / ]; then git bundle create \"$path\" --all && git fetch \"$1\"; else echo \"Not a bundle remote\"; exit 1; fi #"
        bundle-fetch = "!cd \"${GIT_PREFIX:-.}\" && if path=\"$(git config remote.\"$1\".url)\" && [ \"${path:0:1}\" = / ]; then git bundle verify \"$path\" && git fetch \"$1\"; else echo \"Not a bundle remote\"; exit 1; fi #"
        bundle-new = "!cd \"${GIT_PREFIX:-.}\" && if [ -z \"${1:-}\" -o -z \"${2:-}\" ]; then echo \"Usage: git bundle-new <file> <remote name>\"; exit 1; elif [ -e \"$2\" ]; then echo \"File exist\"; exit 1; else git bundle create \"$2\" --all && git remote add -f \"$1\" \"$(realpath \"$2\")\"; fi #"

উদাহরণ:

# Create bundle remote (in local repo)
$ git bundle-new dropbox ~/Dropbox/my-repo.bundle
# Fetch updates from dropbox
$ git bundle-fetch dropbox
# NOTE: writes over previous bundle. Thus, roughly equivalent to push --force --prune --all
$ git bundle-push

2

আমি একই ধরণের সমস্যার মুখোমুখি হয়েছি এবং এর জন্য একটি ছোট স্ক্রিপ্ট তৈরি করেছি। ধারণাটি হ'ল যতটা সম্ভব গিট সহ ড্রপবক্স ব্যবহার করা। বর্তমানে আমি রুবি কোডটি দ্রুত প্রয়োগ করেছি এবং শীঘ্রই আমি আরও যুক্ত করব।

স্ক্রিপ্টটি অ্যাক্সেসযোগ্য https://github.com/nuttylabs/box-git


0

তৃতীয় পক্ষের সংহতকরণ সরঞ্জামগুলি ব্যবহার না করেই আমি পরিস্থিতিটি কিছুটা বাড়িয়ে তুলতে এবং ড্রপবক্স এবং অন্যান্য অনুরূপ ক্লাউড ডিস্ক পরিষেবাগুলি যেমন গিট সহ স্পাইডারওক ব্যবহার করতে পারি।

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

এই সমস্যাটি এড়াতে, আমি তা করেছি:

  1. আমার গিট সূচকটি ব্যবহার করে একটি ফাইলে বান্ডিল করুন git bundle create my_repo.git --all
  2. তাত্ক্ষণিকের পরিবর্তে ফাইল নিরীক্ষণের জন্য একটি বিলম্ব স্থাপন করুন, যেমন 5 মিনিট। এটি ড্রপবক্স পরিবর্তনের মাঝে একটি আংশিক অবস্থা সিঙ্ক্রোনাইজ করার সম্ভাবনা হ্রাস করে। ফ্লাই অন-ফ্লাই (যেমন তাত্ক্ষণিকভাবে সংরক্ষণের নোট গ্রহণের অ্যাপ্লিকেশন সহ) ফাইলগুলি সংশোধন করার সময় এটি ব্যাপকভাবে সহায়তা করে।

এটি নিখুঁত নয় কারণ কোনও গ্যারান্টি নেই এটি গিটের অবস্থাটি আবার গোলমেলে ফেলবে না, তবে এটি সহায়তা করে এবং এই মুহুর্তের জন্য আমি কোনও সমস্যা পাইনি।


0

ম্যাকওএসে আপনি কেবল ড্রপবক্স বন্ধ করতে পারেন, আপনার পরিবর্তনগুলি করুন এবং তারপরে ড্রপবক্সটি আবার চালু করতে পারেন। আমি নিম্নলিখিত সংমিশ্রণটি ব্যবহার করছি এবং এটিতে বেশ খুশি:

উভয়টিতে (আপনার স্থানীয় গিট পরিচালিত প্রকল্প ডিরেক্টরি এবং ড্রপবক্সে অবস্থিত আপনার দূরবর্তী গিট সংগ্রহস্থল) অটো-প্যাকিং নিষ্ক্রিয় করতে নিম্নলিখিত কমান্ডটি চালান (যা ড্রপবক্স সিঙ্ক করার ক্ষেত্রে প্রধান সমস্যা)

git config --global gc.auto 0

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

osascript -e "tell application \"Dropbox\" to quit"

# Compress local
git gc --prune=now; git repack -a -d

# Compress remote
REPOS_DIR_REMOTE=`git remote get-url --push origin`
cd "${REPOS_DIR_REMOTE}"
git gc --prune=now; git repack -a -d

osascript -e "tell application \"Dropbox\" to launch"
osascript -e "display notification with title \"Compress Done\""
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.