আমি উত্স নিয়ন্ত্রণে উত্পন্ন কোড সঞ্চয় করা উচিত


106

এটি এমন একটি বিতর্ক যা আমি অংশ নিচ্ছি I আমি আরও মতামত এবং দৃষ্টিভঙ্গি পেতে চাই।

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

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

আমি কোডের ইতিহাসটি খুঁজে বের করার একটি উপায় চাই, যদিও এটি সাধারণত একটি কালো বাক্স হিসাবে বিবেচিত হয়।

কোন যুক্তি বা পাল্টা যুক্তি?


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

উপরে বর্ণিত কারণে আমি এই মুহুর্তে একটি গৃহীত উত্তর নির্বাচন করব না।


1
: আপনি একটি অনুরূপ প্রশ্ন আগ্রহী হতে পারেন stackoverflow.com/questions/739391/...
mouviciel

আমি বলতে চাই, সাবসোনিকের ক্ষেত্রে, আপনার ইতিহাসের সন্ধানের অন্য কোনও উপায় না থাকলে আপনি সহজেই কিছু কিছু ডাটাবেস পরিবর্তনও ট্র্যাক করার উপায় হিসাবে উত্স নিয়ন্ত্রণে রাখা আকর্ষণীয় হতে পারে might আপনার ডাটাবেস
আর্লজ

1
আমার চিন্তায়, মূল সমস্যাটি হ'ল ক্লাস তৈরির সময় বিভিন্ন বিকাশকারী একই ফলাফল পান না। এগুলি উত্পন্ন করার জন্য কনফিগারেশনটি চেক ইন করা উচিত এবং সমস্ত বিকাশকারী পরিবেশে ধারাবাহিক বিল্ড দেওয়া উচিত।
nawroth

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

এটি একটি দুর্দান্ত প্রশ্ন, তবে এটি একাধিক বিবাদমূলক উত্তরের দ্বারা ইঙ্গিত হিসাবে এসও-র পক্ষে খুব বেশি মতামত ভিত্তিক, এবং এ বিষয়ে ওপির নিজস্ব মন্তব্য।
ঝাঁকুনি

উত্তর:


48

উত্স নিয়ন্ত্রণে এটি সংরক্ষণ করা তার পক্ষে মূল্য হিসাবে বেশি সমস্যা trouble

এটির যে কোনও মূল্য হওয়ার জন্য আপনি প্রতিবার কোনও বিল্ড করার সময় আপনাকে একটি প্রতিশ্রুতিবদ্ধ করতে হবে।

সাধারণত যেখানে আমি কাজ করি উত্স নিয়ন্ত্রণের বাইরে আমরা উত্পন্ন কোড (আইডিল, জ্যাক্সবি স্টাফ ইত্যাদি) রেখে দিই এবং এটি কখনও সমস্যা হয়নি


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

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

বিভিন্ন সরঞ্জাম বিভিন্ন উত্স উত্পন্ন করতে পারে (কমপক্ষে তারা মন্তব্য বা কোড বিন্যাসে পৃথক হতে পারে)। উদাহরণ আইডিয়া "ধারণা দ্বারা উত্পন্ন" মন্তব্য যুক্ত করে যখন গ্রহনটি না করে।
পেট্রা গ্ল্যাডকিখ

1
মতামত বিভক্ত, একটি উত্তর হিসাবে চিহ্নিত এটি ভুল বার্তা দিতে হবে।
এস্প্রেসো

34

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


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

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

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

18
সেই যুক্তি অনুসারে আপনার সংকলিত অবজেক্ট ফাইল, গ্রন্থাগার এবং এক্সিকিউটেবলেরও পরীক্ষা করা উচিত।
লরেন্স গনসাল্ভেস

9
"মূল ভাষাটি অর্থহীন" যেখানে আপনি কোন ধরণের কোড জেনারেটর ব্যবহার করছেন? আপনি কোডের প্রতিটি সংস্করণ তৈরি করতে আপনার সরঞ্জামগুলির কী সংস্করণগুলি ব্যবহার করছেন সে সম্পর্কে নজর রাখার বিষয় হিসাবে, আপনার সম্পূর্ণ সরঞ্জামচেনের জন্য আপনাকে ইতিমধ্যে সেই সমস্যাটি সমাধান করতে হবে। সর্বোপরি, আপনি কীভাবে আপনার পণ্যটির পুরানো সংস্করণে কোনও ব্যাককে ব্যাকপোর্ট করবেন বলে আশা না করা আপনি যদি না জানতেন যে আপনি তখন যে সংকলক এবং লিঙ্কারটি ব্যবহার করছিলেন সেটির কোন সংস্করণটি ছিল? একটি কোড জেনারেটর আপনার সি ++ / জাভা / সি # সংকলক থেকে আলাদা নয়। আপনি এর আউটপুটটি পড়তে সক্ষম হতে পারবেন তা সত্যই অবিচলিত: এর ইনপুটটি উত্স।
লরেন্স গনসাল্ভেস

31

যতবার আমি নিজের ব্যক্তিগত রেপোতে উত্স ট্রিতে পরিবর্তন দেখাতে চাইছি ততবারই 'উত্পন্ন ফাইলগুলি' পরিবর্তিত হয়েছে এবং কমিটিংয়ের প্রয়োজন হিসাবে প্রদর্শিত হবে।

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

এগুলি ছেড়ে দিন এবং তারপরে একটি বিল্ডের পরে, উত্পন্ন ফাইলগুলির প্রতিটিতে একটি 'উপেক্ষা' যুক্ত করুন।


3
এছাড়াও, আপডেটগুলিতে, আপনি আশ্চর্য দ্বন্দ্বগুলি পেতে পারেন যা ভিসিএস সমাধানের প্রয়োজন হিসাবে বিবেচনা করবে, তবে পরের বার আপনি যখন নির্মাণ করবেন বাস্তবে সেগুলি তাদের সমাধান করবে resolve লগগুলিতে বিশৃঙ্খলার কথা উল্লেখ না করা, যা আমি আপনার স্থানীয় গাছের ঝাঁকুনির চেয়েও খারাপ বলে মনে করি।
rmeador

5
আমি যেখানে আছি, তারা 'পরিবর্তিত' হিসাবে প্রদর্শিত হবে না যতক্ষণ না তারা সত্যিই পরিবর্তিত হয়। যদি সেগুলি পুনরায় জেনারেট করা হয় তবে এখনও একই বিষয়বস্তু থাকে তাই কেবল ফাইলের তৈরি / পরিবর্তিত তারিখগুলি আলাদা করার জন্য সিস্টেমটি মনে করে যে তারা পরিবর্তন হয়নি এবং সবকিছু ঠিক আছে।
জোয়েল কোহর্ন

+1 আমি কেবল কোন কোডটি লিখি তার জন্যই আমি দায়বদ্ধ হতে চাই, এমন কোনও কোড নয় যা কিছু সরঞ্জামকিট দ্বারা উত্পাদিত হয়েছিল যা এখনকার সময়ে নকল করা অসম্ভব (তবে কেউ চেষ্টা করতে অনেক সময় ব্যয় করতে পারে))
dkretz

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

25

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

যদি আপনার উত্পন্ন ফাইলটির historicalতিহাসিক সংস্করণটি দেখার প্রয়োজন হয় তবে আপনি এর উত্সের historicalতিহাসিক সংস্করণে সিঙ্ক করে পুনর্নির্মাণ করতে পারেন।

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


20

আমি বলব যে আপনার উত্স নিয়ন্ত্রণে কোনও উত্পন্ন কোড (বা অন্যান্য শৈল্পিক) যুক্ত করা এড়ানো উচিত। উত্পন্ন কোড যদি প্রদত্ত ইনপুটটির জন্য একই হয় তবে আপনি তুলনা করার জন্য কোডটি আলাদা করতে চান এবং কোডটি উত্পন্ন করতে পারেন।


1
: অবগতির জন্য, আমি এখানে যে তুলনা করতে একটি স্ক্রিপ্ট ভাগ করেছি stackoverflow.com/a/16754923/105137
kostmo

17

আমি DRY নীতি কল। আপনার যদি ইতিমধ্যে সংগ্রহস্থলে "সোর্স ফাইলগুলি" থাকে যা নির্মাণের সময় এই কোড ফাইলগুলি তৈরি করতে ব্যবহৃত হয়, "দু'বার একই কোড করার দরকার নেই।

এছাড়াও, উদাহরণস্বরূপ যদি কোড জেনারেশন কোনও দিন বিরতি দেয় তবে আপনি কিছু সমস্যা এড়াতে পারেন।


15

না, তিন কারণে

  1. উত্স কোড হ'ল কিছু প্রয়োজনীয় বা পূর্বের পয়েন্ট হিসাবে আপনার অ্যাপ্লিকেশনটির একটি স্ন্যাপশট পুনরুত্পাদন করার জন্য প্রয়োজনীয় এবং পর্যাপ্ত - আরও কিছু নয় এবং এর চেয়ে কম কিছুই নয়। এর থেকে বোঝা যায় এর অংশটি হ'ল যে কেউ চেক ইন করা সমস্ত কিছুর জন্য দায়বদ্ধ General

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

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


14

আমি সত্যই মনে করি না যে আপনার এগুলি পরীক্ষা করা উচিত।

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


8

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

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

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


6

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

এখন, আপনাকে কোনও নির্দিষ্ট সংস্করণে ব্যবহৃত কোড জেনারেটর উপলব্ধ রয়েছে তা নিশ্চিত করতে হবে! আরও নতুন সংস্করণগুলি বিভিন্ন কোড উত্পন্ন করতে পারে ...


5

ছেড়ে দাও।

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

এটি কেবলমাত্র তাদের জন্যই মাথাব্যথার সৃষ্টি করে যারা তারপরে পার্থক্যগুলি সমাধান করার চেষ্টা করে, বিল্ড দ্বারা আর তৈরি করা ফাইলগুলি খুঁজে না এবং তারপরে সেগুলি মুছুন ইত্যাদি etc.

ব্যথার জগত তাদের জন্য অপেক্ষা করছে যারা উত্পন্ন ফাইলগুলি চেক ইন করেন!


4

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


2
অনুরূপ মন্তব্যগুলি অটোকনফ / অটোমেক-উত্পাদিত ফাইলগুলিতে প্রযোজ্য; বেশিরভাগ লোকেরা তাদের। / কনফিগার এবং মেকফিল.ইন ফাইলগুলি যাচাই করে নিলেও চেক করেন - বেশিরভাগ ব্যবহারকারী (এবং অনেক বিকাশকারী) তাদের পুনর্নির্মাণের প্রয়োজন হবে না এবং এই ফাইলগুলিতে চেক করে আপনার অটোটুলগুলি ইনস্টল করার দরকার নেই don't নির্মাণের জন্য.
স্টোবার

1
হ্যাঁ, আমরা আমাদের কনফিগার স্ক্রিপ্ট এবং সংস্করণ নিয়ন্ত্রণে আমাদের উত্পন্ন মেকআপ নির্ভরতাও সঞ্চয় করি।
ফিল মিলার

4

কিছুটা দেরিতে পৌঁছে ... যাইহোক ...

আপনি কি সংস্থার মধ্যবর্তী ফাইলটিকে উত্স সংস্করণ নিয়ন্ত্রণে রাখবেন? কোড জেনারেশনের ক্ষেত্রে, সংজ্ঞা অনুসারে উত্স কোডটি জেনারেটরের ইনপুট হয়, তবে উত্পন্ন কোডটিকে "আসল" উত্স এবং অন্তর্নির্মিত অ্যাপ্লিকেশনের মধ্যে অন্তর্বর্তী ফাইল হিসাবে বিবেচনা করা যেতে পারে।

সুতরাং আমি বলব: উত্সযুক্ত কোডটি সংস্করণ নিয়ন্ত্রণে রাখবেন না, তবে জেনারেটর এবং এর ইনপুট।

কংক্রিটলি, আমি লিখেছি একটি কোড জেনারেটর নিয়ে কাজ করি: সংস্করণ নিয়ন্ত্রণে উত্পন্ন উত্স কোডটি আমাকে বজায় রাখতে হয়নি। আমি এমনকি এটিও বলব যেহেতু জেনারেটর একটি নির্দিষ্ট পরিপক্কতার স্তরে পৌঁছেছে, তাই ইনপুট (উদাহরণস্বরূপ মডেলের বিবরণ) পরিবর্তন হওয়া সত্ত্বেও আমাকে উত্পন্ন কোডের বিষয়বস্তুগুলি পর্যবেক্ষণ করতে হবে না।


3

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

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


3

কনফিগারেশন পরিচালনার কাজ (যার সংস্করণ নিয়ন্ত্রণ কেবল একটি অংশ) নিম্নলিখিতটি করতে সক্ষম হবেন:

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

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

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

এর অর্থ হ'ল আপনার সংকলক, গ্রন্থাগার ইত্যাদিরও মুখ্যমন্ত্রীর অংশ হওয়া দরকার।

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


2

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

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

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


"এর অর্থ কেবল আপনার উত্স কোড নয়, আপনার বিল্ড পরিবেশ, আপনার আইডিই, এমনকি অন্য গ্রন্থাগার, জেনারেটর বা স্টাফ" \ n এগুলিই আমি যাচাই করে দেখব part আপনার অ্যাপ্লিকেশনগুলির মতো একই বিল্ডটি (যেমন: আপনি একবার 'মেক' টাইপ করেন), উত্সটি দেখুন। যদি আপনি এটি না করেন তবে বাইনারিগুলি দেখুন
কিসারসোজে

2

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

আমি আপনাকে জেনড ফাইলগুলি সংরক্ষণ বা সংরক্ষণ না করার পরামর্শ দিচ্ছি না, আপনি যে সিদ্ধান্তে সাবজেক্ট ম্যাটার এক্সপার্টদের অন্তর্ভুক্ত না করছেন আপনি যেভাবেই সিদ্ধান্ত নেবেন আপনি সম্ভবত ভুল।

আমার দুই সেন্ট.


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

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

2

এখানে উপস্থাপনের পক্ষে এবং বিপক্ষে উভয়ই ভাল যুক্তি রয়েছে। রেকর্ডের জন্য, আমি ভিজ্যুয়াল স্টুডিওতে টি 4 জেনারেশন সিস্টেমটি তৈরি করি এবং আমাদের ডিফল্ট-অফ-বাক্স বিকল্পের ফলে উত্পন্ন কোডটি চেক ইন হয়ে যায় you আপনি যদি চেক ইন না করতে চান তবে আপনাকে আরও কঠোর পরিশ্রম করতে হবে।

ইনপুট বা জেনারেটর নিজেই আপডেট হয়ে গেলে আমার পক্ষে মূল বিবেচনাটি উত্পন্ন আউটপুটকে আলাদা করে দেয়।

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

এই মুহুর্তে, "আপনি উত্পন্ন কোডে পরিবর্তনগুলি সম্পর্কে কেন চিন্তা করেন?" জিজ্ঞাসা করা যুক্তিসঙ্গত (বিশেষত অবজেক্ট কোডের সাথে তুলনা করে।) আমি বিশ্বাস করি যে কয়েকটি মূল কারণ রয়েছে, যা কোনও অন্তর্নিহিত সমস্যার চেয়ে শিল্পের বর্তমান অবস্থাতে নেমে আসে।

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

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

  3. আপনার জেনারেটরের আউটপুট থেকে মুক্তি থেকে মুক্তি পর্যন্ত আপনি কেবল 100% বিশ্বাস করেন না। জেনারেটর সরঞ্জামগুলি থেকে আপনার মূল্য সংযোজন করার মতো অনেক মূল্য রয়েছে এমনকি যদি সেগুলি আপনার সংকলক বিক্রেতার কঠোরতার সাথে নির্মিত এবং রক্ষণাবেক্ষণ না করে। রিলিজ ১.০ আপনার অ্যাপ্লিকেশনের জন্য পুরোপুরি স্থিতিশীল থাকতে পারে তবে আপনার ব্যবহারের ক্ষেত্রে সম্ভবত ১.১ এর কিছু সমস্যা রয়েছে। বিকল্পভাবে আপনি ইনপুট মানগুলি পরিবর্তন করেন এবং দেখতে পান যে আপনি জেনারেটরের একটি নতুন টুকরা ব্যবহার করছেন যা আপনি আগে ব্যবহার করেন নি - সম্ভাব্য ফলাফলগুলি দেখে আপনি অবাক হয়ে যাবেন।

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


2

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

এখন, উভয় পক্ষের তর্কগুলি পুনরায় পাঠানো হতে পারে:

  • "আমি চেকআউট করার সময় এই উত্পন্ন ফাইলগুলি পেতে চাই, কারণ এই মেশিনে এগুলি উত্পন্ন করার সরঞ্জাম আমার কাছে নেই" "
  • "আমার এগুলি ভিসিএসে রাখা উচিত নয়, যেহেতু আমি এই ফাইলটির পরিবর্তনে আগ্রহী নই।"

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

সারসংক্ষেপ

আমি কী বোঝাতে চাইছি তা বোঝাতে আমি উদাহরণ হিসাবে গিট নেব।

  • git status ডিফল্টরূপে উত্পন্ন ফাইলগুলি প্রদর্শন করা উচিত নয়।
  • git commit উত্পন্ন ফাইলগুলি স্ন্যাপশট হিসাবে অন্তর্ভুক্ত করা উচিত।
  • git diff ডিফল্টরূপে উত্পন্ন ফাইলগুলি প্রদর্শন করা উচিত নয়।

পুনশ্চ

গিট হুকগুলি একটি কার্যক্ষম হিসাবে ব্যবহার করা যেতে পারে, তবে গিট হিট স্থানীয়ভাবে সমর্থন করলে এটি দুর্দান্ত হবে। gitignoreআমাদের প্রয়োজনীয়তা পূরণ করে না, কারণ উপেক্ষিত ফাইলগুলি ভিসিএসগুলিতে যাবে না।enter code here


1

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

অতিরিক্ত হিসাবে, এটি আপনার সফ্টওয়্যার সংগ্রহস্থল থেকে নেওয়া প্রতিটি "স্ন্যাপশট" এর অংশ এবং পার্সেল। যদি এটি সফ্টওয়্যারটির অংশ হয় তবে এটি সংগ্রহস্থলের অংশ হওয়া উচিত।


5
আমি ড্রাইভটি -1 এর মাধ্যমে পছন্দ করি। আপনি যদি রাজি না হন তবে এটিকে ভোট দিবেন না - অন্য উত্তরগুলিতে ভোট দিন। একটি ভুল উত্তরের জন্য ডাউনভোটগুলি সংরক্ষণ করুন। এটি একটি বিষয়গত প্রশ্ন।
womp

1

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


2
আপনি কি আপনার অবজেক্ট ফাইলগুলি (.o) যাচাই করেন?
কীসারসোজে 21'09

1

সাধারণভাবে, উত্পন্ন কোডটি উত্স নিয়ন্ত্রণে সংরক্ষণের প্রয়োজন নেই কারণ এই কোডটির পুনর্বিবেচনার ইতিহাসটি কোডটি তৈরি করেছে তার সংশোধন ইতিহাসের দ্বারা এটি আবিষ্কার করা যেতে পারে!

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

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


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

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

1

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

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

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


1

যদি এটি উত্স কোডের অংশ হয় তবে কে বা কী উত্পন্ন করে তা এটিকে উত্স নিয়ন্ত্রণে রাখা উচিত। আপনি আপনার উত্স নিয়ন্ত্রণটি পুনরায় তৈরি না করেই আপনার সিস্টেমের বর্তমান অবস্থাকে প্রতিফলিত করতে চান।


"এটিকে নতুন করে তৈরি না করেই।" সুতরাং আপনি সংকলিত বাইনারি চেক? আপনিও লক্ষ্য প্ল্যাটফর্মের একটি সংস্করণও পরীক্ষা করে দেখুন? কৌশলটি ভাল হবে না won't :(
dss539

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

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

1

অবশ্যই উত্স নিয়ন্ত্রণে উত্পন্ন কোডটি অনেক কারণে রয়েছে। আমি ইতিমধ্যে অনেক লোক যা বলেছে তা পুনরুক্তি করছি, তবে কিছু কারণ আমি এটি করেছি

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

1
এবং আপনার কোড জেনারেটর নিজেই উত্স নিয়ন্ত্রণে নেই কারণ ...?
জেফ্রি হ্যান্টিন

@ জেফ্রি: আমি কখনই বলিনি যে কোড জেনারেটর সোর্স নিয়ন্ত্রণে ছিল না।
জো এনোস

আমি জানি, আমি কেবল জ্বালাতন করছি। :-) আমি খুঁজে পেয়েছি যে প্রচুর কোডডম-ভিত্তিক কোড জেনারেটর তাদের আউটপুট এলোমেলো ক্রমে উত্পাদন করতে পছন্দ করে, যদিও পুনরাবৃত্তির জন্য (এবং এইভাবে উত্পন্ন কোডটি রান থেকে পরিবর্তিত হয় কিনা তা সহজেই জানার ক্ষমতা) আমি ' একটি রুটিন লিখেছেন যা CodeCompileUnitক্যানোনিকাল ক্রমে একটি এর বিষয়বস্তু সাজিয়ে তোলে।
জেফ্রি হ্যান্টিন

0

আমি উত্পন্ন ফাইল ছেড়ে দিতেন আউট একটি উৎস গাছের, কিন্তু এটা করা মধ্যে একটি পৃথক বিল্ড গাছ।

যেমন কর্মপ্রবাহ হয়

  1. সাধারণত চেকইন / আউট / সংশোধন / সংযুক্ত উত্স (ডাব্লু / ও যে কোনও উত্পন্ন ফাইল)
  2. উপযুক্ত সময়ে, উত্স গাছটিকে একটি পরিষ্কার বিল্ড ট্রি হিসাবে পরীক্ষা করে দেখুন
  3. একটি বিল্ডের পরে, সমস্ত "গুরুত্বপূর্ণ" ফাইল ("বাস্তব" উত্স ফাইলগুলি, এক্সিকিউটেবল + উত্পন্ন উত্স ফাইল) যাচাই / নিয়ন্ত্রক উদ্দেশ্যে উপস্থিত থাকতে হবে তা পরীক্ষা করে দেখুন। এটি আপনাকে সমস্ত উপযুক্ত উত্পন্ন কোড + এক্সিকিউটেবল + যাই হোক না কেন, সময়ে বৃদ্ধি যা রিলিজেস / টেস্টিং স্ন্যাপশট ইত্যাদির সাথে সম্পর্কিত এবং দিনের বেলা উন্নয়ন থেকে ডেকেডের ইতিহাস দেয়।

উভয় জায়গায় সত্যিকারের উত্স ফাইলগুলির ইতিহাস একত্রে বাঁধার জন্য সাবভার্সন / মার্কিউরিয়াল / গিট / ইত্যাদি ক্ষেত্রে সম্ভবত ভাল উপায় রয়েছে।


0

দেখে মনে হচ্ছে উভয় পক্ষেই খুব দৃ strong় এবং দৃ conv়প্রত্যয়ী মতামত রয়েছে। আমি শীর্ষস্থানীয় সমস্ত উত্তর পড়ার সুপারিশ করব এবং তারপরে সিদ্ধান্ত নেব যে আপনার নির্দিষ্ট ক্ষেত্রে কী যুক্তি প্রযোজ্য।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.