গিট সংস্করণগুলি বিল্ড নম্বর হিসাবে সংহত করতে হবে না?


12

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

আমরা মনে করি যোগ্যতার মধ্যে রয়েছে:

  • সংস্করণ নম্বর আপডেট করার ক্ষেত্রে মানুষের ত্রুটি সম্পর্কে চিন্তা করার দরকার নেই
  • আমরা কোনও ডিভাইসে যা খুঁজে পাই এবং এটি থেকে উত্স উত্স কোডের মধ্যে সনাক্তকরণ ability

(আমাদের জন্য) যে বিষয়গুলি দেখা দিয়েছে সেগুলির মধ্যে রয়েছে:

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

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

কোন দিকে অবতরণ করা ভাল তার পক্ষে যুক্তিযুক্ত উত্তর আছে?

উত্তর:


15

আমরা সংস্করণ ট্যাগ সহ গিট বিবরণ ব্যবহার করি । প্রবাহটি মূলত:

  • আমরা যে সংস্করণে কাজ করছি তার জন্য ট্যাগ তৈরি করুন (যেমন v1.1.2)
  • প্রতিটি বিল্ড রান git describe
  • যখন আমরা শিপ করি, ট্যাগের নামটি ব্যবহার করি

git describeট্যাগের নাম, ট্যাগের পরে কমিটের সংখ্যা এবং ট্যাগের হ্যাশ সরবরাহ করে। একটি নমুনা ট্যাগ এর মতো দেখাচ্ছে:

v1.1.2-6-a3b27gae

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

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

বর্তমানে, আমাদের এটির একটি আরও জটিল সংস্করণ রয়েছে, তবে ধারণাটি রয়ে গেছে।


1
কেবলমাত্র নোট করুন: হ্যাশ ইন it describe(স্ট্রিংয়ের শেষ অংশ) ট্যাগের সিএসটি-আইডি নয় , পরিবর্তনের হ্যাশ, যার জন্য আমরা বর্ণনা পাই । মানব-পঠনযোগ্য ফর্মটিতে v1.1.2-6-a3b27gae"চেঞ্জেটের পরে ছয়টি চেঞ্জসেটগুলি হবে, v1.1.2-6 হিসাবে ট্যাগ করা হয়েছে, সংক্ষিপ্ত চেঞ্জসেট-হ্যাশ এ 3b27gae রয়েছে"
অলস ব্যাজার

@ লেজিবাজার - ঠিক আছে। ট্যাগের জন্য হ্যাশ নিজেই কম দরকারী, যেহেতু আপনি সহজেই git checkout v1.1.2ট্যাগটির সাথে প্রতিশ্রুতিবদ্ধ বা তালিকাবদ্ধ করতে পারেন git rev-list v1.1.2 | head -n 1
বেটগ্যামিট

6

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

প্রথমত, রেভ 69bc333bc8d8 রেভ 25b0f0d1052c এর আগে, পরে বা সমবর্তী হয় কিনা কে জানে? এসভিএন সিস্টেমের তুলনায় খুব কম প্রসঙ্গ আছে যখন আপনি কমপক্ষে জানতেন যে ১০০ এর পরে ১০০ ছিল। দ্বিতীয়ত, পরবর্তী বিল্ডগুলি একই বলকে অগ্রসর না করায় ডিসিভিএস সোর্স কন্ট্রোলের বিষয়গুলি বিভিন্ন উপায়ে জিনিসকে লিনিয়ার করে তোলে।

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


2

আমি সি # ডিএলএল এর ভিজ্যুয়াল স্টুডিও বিল্ড সিস্টেমের জন্য স্বয়ংক্রিয়ভাবে সংস্করণ সংখ্যা উত্পন্ন করতে নিম্নলিখিত স্কিমটি ব্যবহার করি (সঠিকভাবে সংস্করণ স্থাপনের গ্যারান্টি দেওয়ার একটি পরিষ্কার উপায়ের দরকার ছিল আমাদের Weতিহাসিকভাবে মোতায়েনগুলি সঠিকভাবে সম্পাদন করা হয়নি)।

  • প্রধান - হার্ড কোডেড 1, সাধারণত ব্যবসায়ের পক্ষ দ্বারা নির্ধারিত
  • অপ্রাপ্তবয়স্ক - হার্ড কোডড 0, সাধারণত ব্যবসায়ের পক্ষ দ্বারা নির্ধারিত
  • পুনর্বিবেচনা - 1 জানুয়ারী, 2010 থেকে দিনের সংখ্যা (বা অন্য কোনও স্বেচ্ছাসেবী শুরুর তারিখ)
  • বিল্ড করুন - মধ্যরাতের পর থেকে সেকেন্ডের অর্ধেক সংখ্যা (যেহেতু এটি 16 বিট স্বাক্ষরবিহীন সংখ্যা)

নোট করুন যে এটি ধরে নিয়েছে যে আপনার সাথে খেলতে 2 টি ফানজিবল 16-বিট স্বাক্ষরযুক্ত সংখ্যা রয়েছে। একটি সমতুল্য সিস্টেম তৈরি করা যা ছোট সংখ্যা ব্যবহার করে পাশাপাশি করা যেতে পারে।

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


2

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

https://github.com/colding/MercuryFIX/tree/master/stdlib/scm_state

আপনার নিজের এসসিএম স্টেটের লাইব জিনিস তৈরি করতে আপনার সেই 3 টি ফাইল ব্যবহার করতে সক্ষম হওয়া উচিত।


0

আমি অটোরিভিশন ব্যবহারের পরামর্শ দেব

আপনি বিভিন্ন ফর্ম্যাটে আউটপুট পেতে পারেন, উদাহরণস্বরূপ একটি সি স্টাইল শিরোনাম

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

এছাড়াও, যেহেতু gitঅটোরিভিশন ছাড়াও এতে কাজ করে svnএবং hgএকবার সেটআপ হয়ে গেলে খুব বেশি পরিবর্তন না করে এসএনএন থেকে সরে যাওয়া সহজ করে তোলে।


দুর্ভাগ্যক্রমে অটোরিভিশন ডকুমেন্টেশনগুলি কোনও সুপারিশ দেয় না বলে মনে হয়। অটোরভিশন উত্পন্ন হেডার থেকে কোন তথ্য আপনি একটি অনন্য এবং দ্ব্যর্থহীন সফ্টওয়্যার সংস্করণ স্ট্রিং তৈরি করতে / সংযুক্ত করেন?
সিলিকোমান্সার 21

এটা কিভাবে মানুষের পাঠযোগ্য আপনি এটি করতে চান নির্ভর করে: <VCS_TAG>-<VCS_SHORT_HASH>, <VCS_TAG>-<VCS_TICK>বা এমনকি <VCS_ACTION_STAMP>সব কাজ করা উচিত। আপনি যদি এই চিহ্নগুলির প্রতিটি কিসের একটি সম্পূর্ণ তালিকা চান তবে আমি ম্যান পৃষ্ঠাটি পরীক্ষা করে দেখার পরামর্শ দেব ।
dak180
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.