objective c - আপনি কি CocoaPods ব্যবহার করছেন, যদি আপনার জিগ্যেগোর মধ্যে যায়?




objective-c git (12)

.gitignore ফাইল

কোন উত্তর আসলে একটি। .gitignore , তাই এখানে দুটি স্বাদ।

Pods ডিরেক্টরি চেক ( Benefits )

এক্সকোড / আইওএস বন্ধুত্বপূর্ণ গিট উপেক্ষা, ম্যাক ওএস সিস্টেম ফাইল, এক্সকোড, বিল্ডস, অন্যান্য সংগ্রহস্থল এবং ব্যাকআপ skipping।

.gitignore:

# Mac OS X Finder
.DS_Store

# Private Keys
*.pem

# Xcode legacy
*.mode1
*.mode1v3
*.mode2v3
*.perspective
*.perspectivev3
*.pbxuser

# Xcode
xcuserdata/
project.xcworkspace/
DerivedData/

# build products
build/
*.[oa]

# repositories
.hg
.svn
CVS

# automatic backup files
*~.nib
*.swp
*~
*(Autosaved).rtfd/
Backup[ ]of[ ]*.pages/
Backup[ ]of[ ]*.key/
Backup[ ]of[ ]*.numbers/

Pods ডিরেক্টরি উপেক্ষা ( Benefits )

.gitignore: (পূর্ববর্তী তালিকায় যোগ করুন)

# Cocoapods
Pods/

আপনি পড ডিরেক্টরিতে চেক কিনা বা না, পডফিল এবং পডফিল.লক সর্বদা সংস্করণ নিয়ন্ত্রণের অধীনে রাখা উচিত।

যদি Podfile চেক-ইন না হয় তবে আপনার Podfile সম্ভবত প্রতিটি কোকোপডের জন্য স্পষ্ট সংস্করণ নম্বরগুলির অনুরোধ করতে হবে। here Cocoapods.org আলোচনা।

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

আমি একটি ব্যক্তিগত প্রকল্পে এটি চেষ্টা করেছিলাম: আমার পডফিলের কিউইতে নির্ভরশীলতা যোগ করে, কোকো pod install CocoaPodsTest.xcodeproj এবং pod install CocoaPodsTest.xcodeproj চালায়, এটি দুর্দান্ত কাজ করে।

একমাত্র জিনিস যা আমি বামে ভাবছি তা হল: আমি কি চেক করব এবং সংস্করণ নিয়ন্ত্রণের জন্য আমি কী উপেক্ষা করব? মনে হচ্ছে যে আমি পডফিল নিজেই এবং সম্ভবত .xcworkspace ফাইলেও চেক করতে চাই; কিন্তু আমি Pods / ডিরেক্টরি উপেক্ষা? অন্য কোনও ফাইল আছে যা রাস্তাটি তৈরি করবে (যখন আমি অন্যান্য নির্ভরতা যোগ করব) যেটি আমার .gitignore এ যোগ করা উচিত?


Pods চেক করুন।

আমি এই সফ্টওয়্যার উন্নয়ন একটি নীতি হতে হবে মনে হয়

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

কেন?

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

এখন, বাস্তবিকই, আপনি সত্যিই সব নির্ভরতা চেক করতে পারবেন না। আপনি বিল্ড তৈরি করতে ব্যবহৃত মেশিনের একটি ছবিতে চেক করতে পারবেন না; আপনি কম্পাইলার সঠিক সংস্করণ চেক করতে পারবেন না। এবং তাই। বাস্তবসম্মত সীমা আছে। কিন্তু আপনি যা করতে পারেন তা পরীক্ষা করুন - এটি করা আপনার জীবনকে কঠিন করে তোলে। এবং আমরা যে চাই না।

চূড়ান্ত শব্দ: Pods artifacts নির্মাণ করা হয় না। হস্তনির্মিত তৈরি করুন আপনার builds থেকে উত্পন্ন হয় কি হয়। আপনার নির্মাণ Pods ব্যবহার করে, তাদের উৎপন্ন না। আমি এই বিষয়ে বিতর্ক করা কেন নিশ্চিত না।


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

এই পর্যায়ক্রমিক পূর্ণ উৎস সংরক্ষণাগার সঙ্গে mitigated হতে পারে।


আমি গিটহুবের উদ্দেশ্য-সি গিটগিনোর ব্যবহার করার পরামর্শ দিই । বিস্তারিতভাবে, সর্বোত্তম পদ্ধতিগুলি হল:

  • Podfile সর্বদা উৎস নিয়ন্ত্রণ অধীনে হতে হবে
  • Podfile.lock সর্বদা উৎস নিয়ন্ত্রণ অধীনে হতে হবে
  • CocoaPods দ্বারা উত্পন্ন ওয়ার্কস্পেস উৎস নিয়ন্ত্রণ অধীনে রাখা উচিত
  • কোনও পডের সাথে উল্লেখ করা হয়েছে :path বিকল্পটি উৎস নিয়ন্ত্রণের অধীনে রাখা উচিত
  • ./Pods ফোল্ডার উৎস নিয়ন্ত্রণ অধীনে রাখা যেতে পারে।

আরো তথ্যের জন্য আপনি অফিসিয়াল গাইড পড়ুন করতে পারেন।

উত্স: আমি কোকোপডস কোর দলের সদস্য, @alloy মত

Pods ফোল্ডারটি একটি বিল্ড আর্টিফ্যাক্ট হলেও এটি উৎসের নিয়ন্ত্রণে রাখতে নেওয়ার সিদ্ধান্ত নেওয়ার সময় বিবেচনা করতে পারে:

  • CocoaPods একটি প্যাকেজ ম্যানেজার নয় তাই লাইব্রেরির মূল উৎস লেখক দ্বারা ভবিষ্যতে সরিয়ে ফেলা হতে পারে।
  • যদি Pods ফোল্ডারটি সোর্স নিয়ন্ত্রণে অন্তর্ভুক্ত করা হয় তবে চেকআউট যথেষ্ট হবে বলে প্রকল্পটিকে চালানোর জন্য কোকোপডগুলি ইনস্টল করা প্রয়োজন নয়।
  • CocoaPods এখনও অগ্রগতিতে কাজ করছে এবং এমন বিকল্প রয়েছে যা সবসময় একই ফলাফলের দিকে পরিচালিত করে না (উদাহরণস্বরূপ :head এবং :git বিকল্পগুলি বর্তমানে Podfile.lock সংরক্ষিত Podfile.lock ব্যবহার করে না)।
  • মাঝামাঝি / দীর্ঘ সময় পরে কোন প্রকল্পে আপনি যদি আবার কাজ শুরু করতে পারেন তবে ব্যর্থতার কম পয়েন্ট রয়েছে।

আমি অবশ্যই বলব, আমি রিপোজিটরিতে পডগুলি সম্পাদনা করার একটি ফ্যান। ইতিমধ্যে উল্লেখ করা একটি লিঙ্ক অনুসরণ করে আপনাকে পডগুলির জন্য অনুমতি দেওয়ার জন্য iOS এর জন্য আপনার Xcode প্রকল্পগুলি পেতে একটি ভাল .Gitignore ফাইল দেওয়া হবে তবে আপনি যদি চান তবে সহজেই তাদের বাদ দিতে পারেন: https://github.com/github/gitignore/ ফোঁটা / মাস্টার / উদ্দেশ্য C.gitignore

রিপোজিটরিতে পড যোগ করার একটি অনুরাগী হওয়ার জন্য আমার যুক্তিটি এমন একটি মৌলিক কারণের জন্য, যা কোনও ব্যক্তির উপরে উঠতে পারে না বলে মনে হয়, যদি এমন কোন লাইব্রেরি যা আমাদের প্রকল্পটি এত নির্ভরশীল হয় তবে তা হঠাৎ ওয়েব থেকে সরানো হবে কি?

  • হয়তো হোস্ট হ'ল তারা তাদের গিটহাব একাউন্ট খুলতে চায় না বলে সিদ্ধান্ত নেয়। লাইব্রেরী যদি কয়েক বছর বয়সী বলে মনে হয় (উদাহরণস্বরূপ 5 বছরেরও বেশি বয়সী) তাহলে সেখানে একটি উচ্চ ঝুঁকি রয়েছে যা প্রকল্প উৎসবে আর উপলব্ধ হবে না
  • এছাড়াও আরেকটি বিন্দু, যদি রিপোজিটরির URL পরিবর্তন হয় তবে কী হবে? আমাদের GitHub অ্যাকাউন্ট থেকে পড ভজনাকারী ব্যক্তিটিকে ভিন্ন হ্যান্ডেলের অধীনে উপস্থাপন করার সিদ্ধান্ত নিয়েছেন - আপনার পডের URL গুলি ভাঙ্গতে যাচ্ছে।
  • অবশেষে অন্য বিন্দু। আপনি আমার মত একটি বিকাশকারী যদি বলুন যারা দেশের মধ্যে একটি ফ্লাইট যখন কোডিং অনেক কাজ করে। আমি 'মাস্টার' শাখায় দ্রুত টান দিই, বিমানবন্দরে বসার সময় সেই শাখায় একটি পড ইনস্টল করুন এবং নিজেকেই আগামী 8 ঘন্টা ফ্লাইটের জন্য সেট করুন। আমি আমার ফ্লাইটে 3 ঘন্টা পাই এবং বুঝতে পারছি যে আমাকে অন্য শাখাতে যেতে হবে .... 'ডিওএইচ' - পডের তথ্য অনুপস্থিত যা কেবল 'মাস্টার' শাখায় পাওয়া যায়।

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

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

দিনের শেষে, যদি আপনার একটি চাপ দেওয়ার নির্দিষ্ট সময়সীমা থাকে, একটি শক্ত বাজেট, সময়টি হ'ল - আমাদের যতটুকু সম্ভব তাত্ত্বিক হতে হবে এবং কঠোর মতাদর্শের সময় নষ্ট করবেন না, এবং পরিবর্তে একসঙ্গে কাজ করার জন্য সরঞ্জামগুলির একটি সেট ব্যবহার করা দরকার - আমাদের জীবন আরও কার্যকর করতে।


আমি আমার Pods ডিরেক্টরি কমিট। আমি একমত যে Pods ডিরেক্টরি একটি নির্মাণ Artefact হয়। আসলে আমি এটা স্পষ্টভাবে বলতে চাই না। এটি আপনার অ্যাপ্লিকেশন উৎসের অংশ: এটি ছাড়া তৈরি হবে না!

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

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

আপনি প্রায়ই শাখা স্যুইচ করুন যদি আপনার Pods ডিরেক্টরি অধিষ্ঠিত না একটি গুরুতর মাথাব্যথা সৃষ্টি করে। আপনার নির্ভরতাগুলি সঠিক কিনা তা নিশ্চিত করার জন্য আপনাকে শাখাগুলি স্যুইচ করার সময় প্রতিবার পড ইনস্টল করতে হবে। আপনার নির্ভরতাগুলি স্থিতিশীল হলেও এটি একটি প্রকল্পে প্রাথমিকভাবে এটি একটি বৃহত সময় সঙ্কুচিত হওয়ার মতো কম ঝামেলা হতে পারে।

তাহলে, আমি কি উপেক্ষা করবো? কিছুই নেই। Podfile, লক ফাইল এবং Pods ডিরেক্টরি সব প্রতিশ্রুতিবদ্ধ। আমাকে বিশ্বাস করুন, এটি আপনাকে অনেক ঝামেলা বাঁচাবে। কারা কারা? একটি সামান্য বড় repo? জগতের নয় শেষ।


আমি সবকিছু চেক। ( Pods/ এবং Podfile.lock ।)

আমি রিপোজিটরি ক্লোন করতে সক্ষম হব এবং জানতে পারি যে সবকিছুই ঠিক কাজ করবে যেমনটি শেষবার আমি অ্যাপটি ব্যবহার করেছি।

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


আমি সাধারণত অ্যাপ্লিকেশন এর ক্লায়েন্ট কাজ। যে ক্ষেত্রে আমি কোনও ডেভেলপার চেকআউট করতে এবং বিল্ড এবং রান করতে পারে তা নিশ্চিত করার জন্য আমিও পড ডিরেক্টরিটিকে রেপোতে যোগ করি।

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

প্রকৃতপক্ষে, আমি অবশ্যই সিদ্ধান্ত নিতে পারব যে আমি আপনার প্রশ্নের উত্তর দিতে পারব না, বিশুদ্ধ ব্যবহারকারীদের মতামতের বিপরীতে :) আমি এই প্রশ্নটি সম্পর্কে https://twitter.com/CocoaPodsOrg থেকে টুইট করব।


এটি গঠন করার একটি ভালো উপায় মনে হচ্ছে সত্যিই "পড" ডিরেক্টরিটি একটি গিট স submodule / পৃথক প্রকল্প হিসাবে থাকবে, এখানে কেন।

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

  • লাইব্রেরির মালিকানাধীন ব্যক্তিটি যে কোনও সময়ে এটি গ্রহণ করতে পারে এবং আপনি মূলত SOL হ'ল এটি সমাধান করার মতো কিছু করার বিষয়ে আমি দেখি না।


এর জন্য উত্তর সরাসরি কোকোপড ডক্সগুলিতে দেওয়া হয়েছে। আপনি " http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control " এ দেখতে পারেন

আপনার Pods ফোল্ডারে চেক কিনা তা আপনার কাছে রয়েছে, কারন কার্যপ্রবাহ প্রকল্প থেকে প্রকল্পে পরিবর্তিত হয়। আমরা সুপারিশ করি যে আপনি Pods ডিরেক্টরিটি উৎস নিয়ন্ত্রণের অধীনে রাখুন এবং এটি আপনার। Gitignore তে যুক্ত করবেন না। কিন্তু অবশেষে এই সিদ্ধান্ত আপনার উপর:

Pods ডিরেক্টরি চেক করার উপকারিতা

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

Pods ডিরেক্টরি উপেক্ষা উপকারিতা

  • উৎস নিয়ন্ত্রণ রেপো ছোট এবং কম স্থান গ্রহণ করা হবে।

  • যতক্ষণ পর্যন্ত সমস্ত পডের জন্য উত্স (যেমন GitHub) পাওয়া যায়, ততক্ষণ কোকোপডগুলি একই ইনস্টলেশন পুনরায় তৈরি করতে সক্ষম হয়। (টেকনিক্যালি কোন গ্যারান্টি নেই যে পড ইনস্টল চালানো হবে পডফিলের মধ্যে একটি সংঘবদ্ধ SHA ব্যবহার না করে একই জিনিসপত্র আনতে এবং পুনঃনির্মাণ করা। পডফিলের জিপ ফাইলগুলি ব্যবহার করার সময় এটি বিশেষ করে সত্য।)

  • বিভিন্ন পড সংস্করণের সাহায্যে শাখাগুলি মার্জ করার মতো উৎস নিয়ন্ত্রণ ক্রিয়াকলাপগুলি সম্পাদন করার সাথে মোকাবিলা করার কোনো দ্বন্দ্ব নেই।

আপনি পড ডিরেক্টরিতে চেক কিনা বা না, পডফিল এবং পডফিল.লক সর্বদা সংস্করণ নিয়ন্ত্রণের অধীনে রাখা উচিত।


ব্যক্তিগতভাবে আমি Pods ডিরেক্টরি এবং বিষয়বস্তু চেক না। আমি বলতে পারছি না আমি দীর্ঘ বয়সের প্রভাব বিবেচনা করে অতিবাহিত করেছি কিন্তু আমার মতামতটি এরকম কিছু:

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


শেষ পর্যন্ত আপনি গ্রহণ পদ্ধতি আপ।

কোকোপোডস দল এটি সম্পর্কে এটি ভাবছে:

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

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

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

নীচে Cocoapods টিম দ্বারা তৈরি একটি ভাল পেশাদার / বনাম তালিকা এবং নীচে উল্লেখ করা উদ্ধৃতি সম্পূর্ণ লেখা আছে।

here





cocoapods