একক বিকাশকারী জন্য সেরা সংস্করণ নিয়ন্ত্রণ অভ্যাস?


36

আমি আমার কাজে একমাত্র বিকাশকারী এবং যখন আমি ভিসিএসের সুবিধাগুলি বুঝতে পারি; ভাল অভ্যাসগুলিতে লেগে থাকা আমার পক্ষে কঠিন মনে হয়। এই মুহুর্তে আমি বেশিরভাগ ওয়েব অ্যাপ্লিকেশন বিকাশ করতে গিট ব্যবহার করছি (যা আমার কাজের কারণে কখনই উন্মুক্ত হবে না)।

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

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

আমি কতবার প্রতিশ্রুতিবদ্ধ করা উচিত? প্রতিটি এক-লাইনের পরিবর্তনটি কি প্রতিশ্রুতিবদ্ধ হওয়া উচিত? আমি কি কোনও পরীক্ষার আগে প্রতিশ্রুতিবদ্ধ করব (উদাহরণস্বরূপ, কমপক্ষে সিনট্যাক্স / সংকলন ত্রুটির জন্য এবং তারপরে একে একে পুরোপুরি পূর্বাবস্থায় ফেলাতে হবে; যেমন ধারণাটি কার্যকর হয়নি বা বার্তাটি মিথ্যা?)

রাতের খাবারের কাজটি এখনও টাটকা থাকাকালীন কাজ করা বন্ধ করার আগে আমি কি প্রতি সকালে / বিকেলে প্রতিশ্রুতিবদ্ধ হওয়া উচিত? খারাপ ভিসিএস অভ্যাস রেখে আমি কী মিস করছি?


2
আপনি কেন ভিসিএস আপনার পক্ষে কাজ করে না বলে মনে হচ্ছে তার একটি হ্যাঙ্গআপ কারণ আপনি গিটকে একক বিকাশকারী হিসাবে ব্যবহার করছেন? গিটটি আমার কাছে একক বিকাশকারীকে ওভারকিলের মতো বলে মনে হচ্ছে, সম্ভবত এসভিএন এর মতো কম বৈশিষ্ট্যযুক্ত কোনও সাধারণ ব্যবহার সহজ হবে?
maple_shaft

6
@ ম্যাপেল_শ্যাফ্ট: আমি গিট ব্যবহার করি নি, তবে মুরচুরিয়াল বেসিক একক বিকাশকারী কাজের জন্য সাবভারশন হিসাবে প্রায় সহজ। (সরল, আসলে, যেহেতু ভান্ডার-সমতুল্য তৈরি করা সহজ))
ডেভিড থর্নলি

15
গিটকে কেন ওভারকিল করা হবে?
তামাস সেজেলি

1
@ ম্যাপেল_শ্যাফ্ট আসল সুবিধাটি পরে আসবে। কম জন্য নিষ্পত্তি করার প্রয়োজন নেই।

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

উত্তর:


24

আপনি অনেক মিস করছেন।

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

আমি যা পাই তা হ'ল আমি চাইলেই ফিরে যেতে পারি। যা অনেকটা। এছাড়াও, শাখাগুলি অর্ডার করা সাহায্য করে।

আমার ধারণা এটি আমাকে অনেক অর্ডার দেয়।

আমি এসএনএন ব্যবহার করছি এবং আমি এতে অসুস্থ হয়ে পড়ছি। তবে অন্য যে কোনও বিষয় শিখতে বেশি সময় ব্যয় করতে পারে না।

শুভকামনা।


+1 আমি সম্প্রতি
ভিসিএস

1
আমি দীর্ঘকাল ধরে সংস্করণ নিয়ন্ত্রণ এড়িয়ে গিয়েছিলাম কারণ আমি এই ধারণাটির মধ্যে ছিলাম যে এটি খুব ভারী / কুরুচিপূর্ণ / বিরক্তিকর। কয়েক মাস আগে আমি সাবভারশনটির সাথে পরিচিত হওয়ার সিদ্ধান্ত নিয়েছি এবং এখন আমি এর শপথ করছি।
ডালিন সেয়েভরাইট

1
আমার বেশ কয়েকটি একক প্রকল্প রয়েছে: কিছু গিথুব, কিছু না not আমি যখনই কেবল একটি নির্দিষ্ট এপিআই / সরঞ্জাম শেখার অভিব্যক্ত উদ্দেশ্যে কিছু তৈরি করি এমনকি সর্বদা গিট ব্যবহার করি। এটি বাস্তব প্রকল্পগুলির জন্য ভাল অভ্যাস প্রয়োগ করে যেখানে এটি আরও কার্যকর, যেমন @ জেবিকোলম্যানারস বর্ণনা করেছেন।
সরমন্ট

2
আমি আপনার "ব্যয় করতে পারবে না আর বেশি সময় শেখার কিছু" সঙ্গে পাল্টা করব hginit.com । আপনি এক সপ্তাহের জন্য এসএনএন-তে ক্রুদ্ধ হয়ে কাটানোর সময়টি গণনা করুন, তারপরে পরের সপ্তাহে হিগনিট পড়তে সেই পরিমাণ সময় নিন।
tmadmers

@tdammers দেখব
কোশি

18

আপনার প্রায়শই প্রতিশ্রুতিবদ্ধ হওয়া উচিত। কিছু যৌক্তিক মাইলফলকে পৌঁছানোর পরে আপনার অবশ্যই প্রতিশ্রুতিবদ্ধ হওয়া উচিত। যদি এটি এক দিনের চেয়ে বেশি সময় নেয় তবে আপনার কাজের দিনের শেষে কমপক্ষে প্রতিশ্রুতিবদ্ধ করা উচিত, বা আরও ভাল, আপনার কাজকে ছোট ছোট অংশে বিভক্ত করা উচিত।

এটি করার অনেক কারণ রয়েছে। উদাহরণস্বরূপ, যদি আপনার কম্পিউটার ক্রাশ হয়? এক দিনের বা এক মাসের তুলনায় কেবলমাত্র এক দিনের কাজের মূল্য হ্রাস করা আরও ভাল। আর একটি কারণ হ'ল ঘন ঘন কমিটগুলি বাগটিকে আলাদা করতে সহজ করে তোলে। আপনি একটি বাইনারি অনুসন্ধান করতে পারেন এবং কোন ছোট পরিবর্তনটি বাগের কারণে ঘটেছে তা নির্ধারণ করতে পারেন।

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


"যদি আপনার কম্পিউটারটি ক্র্যাশ হয় তবে কী হবে" - ফাইলগুলি ডিস্কে প্রায়শই সংরক্ষণ করা হয় এবং রাতে তৈরি করা ব্যাকআপ হয় (যদি আপনি বোঝাতে চেয়েছিলেন যে হার্ড ডিস্কটি ব্রেক হয়েছে কিনা)। তবে বাগগুলির জন্য বাইনারি অনুসন্ধানের জন্য +1 কার্যকর হতে পারে। আমি আমার 95% ত্রুটিগুলি দ্রুত খুঁজে পেয়ে বেশ ভাল; তবে প্রতিবারই সত্যিকার অর্থেই উদ্ভট ত্রুটিটি প্রোগ্রামের অন্য একটি অংশে আপাতদৃষ্টিতে অসংলগ্ন পরিবর্তন থেকে উদ্ভূত হয়েছে।
ডাঃ জিম্বোব

হ্যাঁ আমি বলতে চাইছি "যদি ডিস্কটি ব্রেক হয়", বা "সিলিং গুহাগুলি যদি" ​​থাকে বা "যদি কোনও ইএমপি ডিভাইসটি কাছাকাছি চলে যায়"। :) ডেটা ক্ষতি হতে পারে এমন যে কোনও কিছু। প্রায়শই প্রতিশ্রুতিবদ্ধ করা আপনার কাজের ব্যাক আপ করার সহজতম উপায় এবং এটি আপনাকে রিমোট সংস্করণ নিয়ন্ত্রণ সার্ভার ব্যবহার করে সহজেই একটি অফ ব্যাকআপ ব্যাকআপ করতে দেয়।
Dima 20

1
@ ডিমা: আপনাকে কেবলমাত্র আপনার ব্যাকআপটি রাখার জন্য চাপ দেওয়া এবং প্রতিশ্রুতিবদ্ধ করতে হবে না
লিবারফোর্স

@ লিবারফোর্স সমস্ত সংস্করণ নিয়ন্ত্রণ সিস্টেমে পুশ অপারেশন নেই। এই উত্তরটি ২০১২ সালের। আমি সেই সময় সাবস্ট্রেশন ব্যবহার করছিলাম যা বিতরণ করা হয়নি। সুতরাং, কোন ধাক্কা।
দিমা

2
@ ডিমা: অবশ্যই, তবে ওপি গিট ব্যবহার করছিল, সুতরাং নির্দেশাবলী বিভ্রান্তিকর হতে পারে কারণ আপনি বলেননি যে আপনি এসভিএন সম্পর্কে কথা বলছেন।
স্বাধীনতা

10

সিভিএস থেকে সর্বাধিক উপার্জনের জন্য আপনার একবারে একটি বৈশিষ্ট্য / বাগ-ফিক্সে কাজ করা উচিত, এবং সেই বৈশিষ্ট্যটি / বাগ-ফিক্সটি সম্পূর্ণ হওয়ার পরে প্রতিশ্রুতিবদ্ধ। এটি করে আপনি লাভ করবেন:

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

এছাড়াও, যেহেতু আপনি পিসিগুলির মধ্যে স্যুইচ করেন আপনার কমপক্ষে দুটি শাখা থাকা উচিত:

  • একটি "যেতে প্রস্তুত" শাখা যা সর্বদা কাজ করে (অবশ্যই আপনি উন্নয়ন শাখায় যে বাগগুলি কাজ করছেন তা বাদ দিয়ে)
  • একটি উন্নয়ন শাখা যা সময়ে সময়ে অগ্রহণযোগ্য অবস্থায় থাকতে পারে (যেমন আপনার কাজ থেকে বাড়ি ভ্রমণের সময়;)।

1
শাখা যাওয়ার জন্য প্রস্তুত +1! আমি জানি না যে কতবার বস এবং সম্ভাব্য ক্লায়েন্টরা চলার সাথে সাথে সফ্টওয়্যারটি দেখানোর জন্য আমাকে জিজ্ঞাসা করা হয়েছিল। এটি এমন একটি সংস্করণ পেয়ে খুব সুন্দর যে এটি আসলে কাজ করে এবং প্রবাহের অবস্থায় না।
ব্লুবিল

একটি সংস্করণ যা কাজ করে এবং পরীক্ষিত হয় সাধারণত ট্যাগ হয়। যদি না মনিব সর্বশেষ পরিবর্তনগুলি দেখতে চায় তবে আপনার এটি দেখাতে হবে। সেক্ষেত্রে আপনি কেবল git stashএবং আপনার কী আছে তা প্রদর্শন করুন বা একটি নির্দিষ্ট প্রতিশ্রুতি চেকআউট করুন। অবশ্যই, যদি আপনার বড় পরিবর্তন হয় যা একটি কাজ চলছে, তবে সেগুলি একটি পৃথক ওয়ার্ক-ইন-প্রগ্রেস শাখায় হওয়া উচিত, সুতরাং আপনার মাস্টার শাখাটি হ'ল ডিস্টিকো স্থিতিশীল।
16:38

7

প্রতিটি এক-লাইনের পরিবর্তনটি কি প্রতিশ্রুতিবদ্ধ হওয়া উচিত?

এটি যদি কোনও বাগ ঠিক করে দেয় তবে তা নিশ্চিত।

খারাপ ভিসিএস অভ্যাস রেখে আমি কী মিস করছি?

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

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

আমি কতবার প্রতিশ্রুতিবদ্ধ করা উচিত?

আমি এটিকে কয়েকটি মেট্রিকগুলিতে বিভক্ত করেছি:

  • আপনার কম্পিউটারটি মারা গেলে আপনি কতটা কাজ হারাতে ইচ্ছুক? নাকি চুরি হয়ে যায়?

  • এটি যদি বাগ_1234 স্থির করে, তবে "বাগগুলি সংশোধন করুন বাগ_1234" সহ কোডটি চেক করুন।

  • যদি এটি একটি লজিকাল বিতরণ / মাইলফলক হয়, তবে এটি "বাগ_1234, ফর্ম_অক্সিজ" (বা যথাযথভাবে টাস্ক_1234) এর মত মন্তব্য সহ পরীক্ষা করে দেখুন।

  • আপনি বাড়ির দিকে যাবার আগে শুক্রবার সন্ধ্যায় সর্বদা কোডে চেক করুন। ছুটিতে যাওয়ার আগে সমস্ত কিছুতে একটি চেক-ইন (বা চেকআউটগুলি পূর্বাবস্থায়) করুন।

  • যখনই কোম্পানির নীতি আদেশ করে।


1
আমি একমত যে লোকটিকে বরখাস্ত করা উচিত ছিল। কমিট না করা, এমনকি কমপক্ষে মুক্তি পাওয়ার জন্য, উন্মাদতা। ১.২-তে কী কোড রয়েছে তা আপনি যদি না জানেন তবে আপনি কীভাবে সংস্করণ ১.০ সংস্করণে বাগগুলি খুঁজে পেতে পারেন? লোকটি কি কেবল কোডের অনুলিপি করছিল এবং তার হার্ড ড্রাইভে জিপ করছিল?
16:48

5

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

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


4

আমি বলব যে আপনি যে সবচেয়ে বড় জিনিসটি হারিয়েছেন তা একসাথে পরিবর্তনের গ্রুপিংয়ের মাধ্যমে হারিয়ে যাচ্ছেন এবং তা হ'ল বাগগুলি কখন এবং কোথায় চালু হয়েছিল তা ট্র্যাক করার ক্ষমতা।

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

একটি দলে বিকাশ করার সময় অন্যান্য সুবিধাগুলি কার্যকর হয় - সাধারণ প্রতিশ্রুতিবদ্ধ মন্তব্য, সহজ সংযোজন, বাগ সংশোধন সম্পর্কিত প্রতিশ্রুতি ইত্যাদি etc.

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


4

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

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

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

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

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

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


1

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

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

এটিও কার্যকর যদি সুযোগক্রমে কেউ লাফ দেয় এবং আপনি আর একা থাকেন না। এমনকি কেবল আপনার জন্য, একটি পরিষ্কার ইতিহাস git blameকখন এবং কেন একটি বাগ রয়েছে সেই লাইনটি পরিবর্তন করা হয়েছে তা জানার জন্য এটি ব্যবহার করা সহজ করে তোলে ।

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

আপনি এর শক্তিও প্রকাশ করতে পারেন git bissectযে আপনাকে এই প্রতিশ্রুতিবদ্ধ প্রতিশ্রুতি দেয়। যদি প্রতিশ্রুতিটি 2,000 লাইন দীর্ঘ হয় তবে এটি এখনও সহায়তা করে কিন্তু এতটা না ...

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

আপনার অন্যান্য প্রশ্ন সম্পর্কে:

  • আপনি যেগুলি এমনকি সংকলন করেননি সেগুলি প্রতিশ্রুতিবদ্ধ করবেন না, যদি না আপনি (ইতিহাস ব্যবহারের জন্য git rebase --interactive) আপনার ইতিহাসটি পুনরায় লিখতে রাজি হন ।
  • একটি লাইন পরিবর্তন যদি একটি পৃথক উদ্দেশ্য থাকে তবে এটি একটি প্রতিশ্রুতি প্রাপ্য (কোনও বাগ সংশোধন করে, বা আপনার বর্তমানে নিবন্ধিত পরিবর্তনের সাথে সম্পর্কিত নয়)। git add --patchতাদের মঞ্চ করতে ব্যবহার করুন ।
  • রাতের খাবারের আগে নিজেকে জোর করে চাপিয়ে দেওয়ার দরকার নেই, যদি না আপনার কাছে প্রয়োজনীয় জিনিসগুলি হারাতে পারে না তবে। সেক্ষেত্রে আপনার অগ্রগতিতে কোনও পৃথক শাখায় প্রতিশ্রুতিবদ্ধ হতে পারেন।
  • দূরবর্তী সংগ্রহস্থলে প্রতিশ্রুতিবদ্ধ করা এবং চাপ দেওয়া একটি ব্যাকআপ। আপনি যদি প্রতি সপ্তাহে একবার প্রতিশ্রুতিবদ্ধ হন এবং চাপ দেন তবে আপনি সবচেয়ে খারাপ পরিস্থিতিতে এক সপ্তাহের কাজ হারাতে পারেন।

0

আমি কতবার প্রতিশ্রুতিবদ্ধ করা উচিত?

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

প্রতিটি এক-লাইনের পরিবর্তনটি কি প্রতিশ্রুতিবদ্ধ হওয়া উচিত?

না, যদি না সেই এক-লাইনের পরিবর্তনটি কোনও বৈশিষ্ট্য বা বাগ উল্লেখযোগ্যভাবে পরিবর্তন করে।

আমি কি কোনও পরীক্ষার আগে প্রতিশ্রুতিবদ্ধ করব (উদাহরণস্বরূপ, কমপক্ষে সিনট্যাক্স / সংকলন ত্রুটির জন্য এবং তারপরে একে একে পুরোপুরি পূর্বাবস্থায় ফেলাতে হবে; যেমন ধারণাটি কার্যকর হয়নি বা বার্তাটি মিথ্যা?)

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

রাতের খাবারের কাজটি এখনও টাটকা থাকাকালীন কাজ করা বন্ধ করার আগে আমি কি প্রতি সকালে / বিকেলে প্রতিশ্রুতিবদ্ধ হওয়া উচিত? খারাপ ভিসিএস অভ্যাস রেখে আমি কী মিস করছি?

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

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


I am not very familiar with VCS or what bad habits it causes.ভাগ্যবান তুমি!
ইন্নিস

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

ঠিক আছে, যেহেতু আমি 3 বছরেরও বেশি সময় ধরে সোর্সসেফের সাথে লড়াই করেছি, আমার মন্তব্য এখনও দাঁড়িয়ে আছে: ভাগ্যবান আপনি! আপনাকে একটি উদাহরণ দেওয়ার জন্য, ভিএসএস 6 প্রায় 200 এমবি - 300 মিমিগুলির সংগ্রহস্থলগুলি পরিচালনা করতে পারে, তারপরে আপনি ভাগ্যবান হলে কয়েকটি ফাইল এলোমেলোভাবে দূষিত হবে। অবশ্যই সেখানে একাধিক ফিক্স, এবং ওয়ার্কআরউন্ডস, এবং ভিএসএস কখনই এমএস দ্বারা একটি সম্পূর্ণ প্রস্ফুটিত ভিসিএস হওয়ার কথা ছিল না, তবে নিজেকে ভাগ্যবান মনে করুন আপনাকে কখনই এর মোকাবেলা করতে হয়নি ...
ইয়ান্নিস

0

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

Age:  9 mins [*] Working on implementing and testing PaintSystem.
Age: 17 mins [*] Working on implementing and testing PaintSystem.
Age: 37 mins [*] Working on implementing and testing PaintSystem.
Age: 52 mins [*] Working on implementing and testing PaintSystem.

সুতরাং আমি ঠিক বলতে পারি না যে আমার শাখায় (ঘনঘটিত) এই জাতীয় ঘন ঘন এবং অভ্যাসগত কমিটগুলি সর্বাধিক বিস্তারিত কমিট লগগুলিকে উত্সাহিত করেছিল। কখনও কখনও আমি এমনকি অর্ধেকভাবে কোডটিও কমিট করে দিই, যদি বলি যে, আমার স্ত্রী আমাকে ডিনারে বাইরে যেতে বলেছেন, আমি ঠিক তাড়াতাড়ি কপি করে পূর্ববর্তী "ওয়ার্কিং অন [...]" কমিট বার্তাটি ব্যবহার করব।

আমার প্রতিশ্রুতিবদ্ধ লগ ধরণগুলি সাধারণত: "Working on [...] Working on [...] Working [...] Completed [...] Started working on [...] Working on [...] Completed [...] Started working on [...]"

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

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

প্রতিটি এক-লাইনের পরিবর্তনটি কি প্রতিশ্রুতিবদ্ধ হওয়া উচিত?

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

টিবিএইচ আমার প্রচুর প্রতিশ্রুতি যা "Working on [...]"লগের প্যাটার্ন অনুসরণ করে পরিবর্তনের সুসংহত ইউনিটকে মডেলিং করে না (কেন আমি প্রায়শই এর চেয়ে ভাল বার্তা নিয়ে আসতে পারি না "Working on [...]") তবে কেবল একটি কাপ কফি তৈরির মতো শ্বাস নিতে আমার ফলাফল। "Completed [...]"বার্তা কাজের যে ইউনিট শেষে ইঙ্গিত, এবং আমি প্রায়ই প্রথম সহ অনেক আরো বিস্তারিত বার্তা লিখতে "Started working on [...]"টাইপ বার্তা যখন আমি কিছু কাজ শুরু। যদি আপনি গড়ে প্রতি 15 মিনিটে একবারের মতো প্রতিশ্রুতিবদ্ধ হন, তবে সেই "বার্তা দেওয়া [...]" বার্তাগুলি আরও বিশদ বার্তায় কোনও বাল্কিয়ারের প্রতিশ্রুতিবদ্ধ হয়ে কি করতে পারে তার জন্য আন্তঃস্থাপকের মতো।

আমি কি কোনও পরীক্ষার আগে প্রতিশ্রুতিবদ্ধ করব (উদাহরণস্বরূপ, কমপক্ষে সিনট্যাক্স / সংকলন ত্রুটির জন্য এবং তারপরে একে একে পুরোপুরি পূর্বাবস্থায় ফেলাতে হবে; যেমন ধারণাটি কার্যকর হয়নি বা বার্তাটি মিথ্যা?)

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

রাতের খাবারের কাজটি এখনও টাটকা থাকাকালীন কাজ করা বন্ধ করার আগে আমি কি প্রতি সকালে / বিকেলে প্রতিশ্রুতিবদ্ধ হওয়া উচিত?

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

ওহ এবং কখনও কখনও আমার চলে যাওয়ার পরে আমি কিছুটা মাতাল হয়ে পড়ে এবং মাতাল অবস্থায় জটিল কোডটি লেখার চেষ্টা করা সাধারণত একটি খারাপ ধারণা (যদিও সর্বদা নয়; একসময় আমি মাতাল হয়ে ইউরেকের মুহুর্তের পরে সত্যিই একটি দুর্দান্ত প্রসঙ্গ মেনু সিস্টেম নিয়ে এসেছি, তবে আমার কাছে কেবল 6 টি বিয়ার পছন্দ হয়েছিল এবং এটি কোডের মতো জটিল ছিল না)। যদি আমি এটি করার চেষ্টা করি তবে আমি মাতাল কোডটি সোবার কোডের সাথে মিশ্রিত না করে পরিবর্তে ফিরে যাওয়ার আগে কমপক্ষে আমি স্বচ্ছ-লিখিত কোডটি প্রতিশ্রুতিবদ্ধ করেছি, যেখানে আমার প্রতিশ্রুতিবদ্ধ লগটি পড়তে পারে, "Reverting back to code written before Jagermeister shots."আমি এটি করি না খুব ঘন ঘন না হয়ে যদি না আমি মাতাল কোড অনুপ্রেরণা পাই, তবে এই বিরল ক্ষেত্রে, এটি সত্যিই সাহায্য করেছিল যে আমি বাইরে গিয়ে মাতাল হওয়ার আগেই আমি কিছু প্রতিশ্রুতিবদ্ধ হয়েছিল।


আপনার জন্য থাম্বের বিধি: যদি আপনার অভিন্ন বার্তাগুলির সাথে টানা দুটি কমিট হয় তবে আপনি প্রায় অবশ্যই এটি ভুল করছেন। হয় সেগুলির একটিই প্রতিশ্রুতিবদ্ধ হওয়া উচিত, বা তাদের সম্পর্কে আলাদা কী হওয়া উচিত তা নির্ধারণ করুন এবং লগ বার্তাগুলি লিখুন যা এই পার্থক্যটি প্রতিফলিত করে (যেমন "পেইন্ট সিস্টেমে কাজ করা" x2 এর পরিবর্তে "নতুন পেইন্টের ডেটা সংজ্ঞা দিন" এবং "পেইন্ট ডেটা সঠিকভাবে সেট করুন")।
মার্নেন লাইবো-কোসার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.