কোকোপডস এবং গিটহাব কাঁটাচামচ


108

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

মূলত, আমি নিম্নলিখিতটিতে আমার ব্যবহার করে গিটহাবের উপর একটি প্রকল্পটি তৈরি করেছি Podfile:

pod 'REActivityViewController', '~> 1.6.7', :git => 'https://github.com/<username>/REActivityViewController.git'

আমি তখন কাঁটাচামচটিতে কিছু পরিবর্তন করেছি এবং অবশ্যই যখন আমি pod installঅন্য পোড ইনস্টল করার জন্য এটি করি তখন এটি মূলটি পুনরায় ইনস্টল করে REActivityViewControllerএবং আমার পরিবর্তনগুলি মুছে দেয়।

আমি বুঝতে পারছি যে আমার পরিবর্তনগুলি অন্যটির আগে আমার কাঁটাচামচায় ঠেলে দেওয়া দরকার pod install, তবে কীভাবে জানব যে এটি কোকোপডস দ্বারা ইনস্টল করা একটি রেপো বিবেচনা করেই এটি কাঁটাচামচটি ইনস্টল করা হচ্ছে? আমি REActivityViewControllerফোল্ডারের নীচে ইনস্টল করা Podsফোল্ডারে সন্ধান করেছি এবং কোনও গিট ফাইল নেই।

আমার প্রকল্পের বাইরে আমার কাঁটাচামচ নিয়ে কাজ করা এবং তারপরে পরিবর্তনগুলি ইনস্টল করার জন্য কোকোপডগুলি ব্যবহার করা দরকার? এটি একটি কর্মপ্রবাহের খুব জটিল।

নাকি আমার সাবমডিউলগুলি দিয়ে কিছু করার দরকার?

উত্তর:


185

আমি একটি উদাহরণ ব্যবহার করে এই প্রশ্নের উত্তর দেব। আমি এখানে কিছু অতিরিক্ত কার্যকারিতা সহ টিটিটিএটিগ্রিবিউটেড লেবেলের একটি কাঁটাচামচ রেখেছি:

https://github.com/getaaron/TTTAttributedLabel

এটি একটি কোকোপডস প্রকল্পে ব্যবহার করার জন্য, আমি:

  1. আমার পরিবর্তনগুলিকে আমার কাঁটাচামচে চাপ দিন
  2. পরিবর্তনগুলি এবং আপডেট পেতে আমার পডফিলটি কনফিগার করুন

একবার আপনি নিজের পরিবর্তনগুলিকে আপনার কাঁটাচামচায় ঠেলে দেওয়ার পরে, আপনার শেষ প্রতিশ্রুতির SHA পান। আপনি এটি ব্যবহার করে git rev-parse origin/master | pbcopyবা গিটহাবের কমিটি পৃষ্ঠাতে করতে পারেন আপনার প্রকল্পের জন্য : গিটহাবে কোনও কমিটের এসএইচএ অনুলিপি করার স্ক্রিনশট

তারপরে, আপনি আপনার পোডফাইলে এইভাবে আপনার কাঁটাচামচ সম্পর্কিত নির্দিষ্ট অঙ্গীকার নির্দিষ্ট করতে পারেন:

pod 'TTTAttributedLabel', :git => 'https://github.com/getaaron/TTTAttributedLabel.git', :commit => 'd358791c7f593d6ea7d6f8c2cac2cf8fae582bc1'

এর পরে, pod updateআপনার কাঁটাচামচ থেকে এই বিশেষ প্রতিশ্রুতি আপডেট করবে। আপনি যদি চান, আপনি podspecনিজের কাঁটাচামচ জন্য একটি তৈরি করতে পারেন , কিন্তু আমি এই পদ্ধতির সহজ বলে মনে করি এবং আমি একটি নতুন কর্মপ্রবাহকে ন্যায়সঙ্গত করার জন্য প্রায়শই পর্যাপ্ত পরিবর্তনগুলি করি না।

আমার প্রকল্পের বাইরে আমার কাঁটাচামচ নিয়ে কাজ করা এবং তারপরে পরিবর্তনগুলি ইনস্টল করার জন্য কোকোপড ব্যবহার করা দরকার? একটি ওয়ার্কফ্লো এর জটিল উপায়।

আপনি এটি এইভাবে করতে পারেন, তবে আমি সাধারণত:

  1. আমার প্রকল্পের ভিতরে কোডটি সম্পাদনা করুন এবং এটি কাজ করে তা নিশ্চিত করুন
  2. আমার কাঁটাচামচায় পরিবর্তনগুলি অনুলিপি করুন by
    • একটি প্যাচ রফতানি, বা
    • পুরো উত্স কোড ফাইল অনুলিপি করা
  3. প্রতিশ্রুতিবদ্ধ এবং গিটহাবের দিকে ধাক্কা
  4. নতুন SHA এর সাথে পডফিল আপডেট করুন
  5. চালান pod update

নাকি আমার সাবমডিউলগুলি দিয়ে কিছু করার দরকার?

না, আপনার দরকার নেই।


ফলোআপ প্রশ্ন: সুতরাং নতুন এসএএএর সাথে পডফিল আপডেট করা সত্যিই প্রয়োজনীয়? pod installসর্বশেষতম প্রতিশ্রুতি দিয়ে সর্বাধিক আপ টু ডেট সংস্করণটি স্বয়ংক্রিয়ভাবে ক্লোন করবে না?
রমসেল

আপনি যদি নিজের প্রকল্পটির নাম পরিবর্তন করে অন্যরকম কিছু করেন এবং নিজের পডস্পেক ফাইল তৈরি করেন তবে আপনি এটি নিজের রেপোতে নির্দেশ করতে পারেন এবং pod 'MyForkName', :headপরিবর্তে ব্যবহার করতে পারেন ।
অ্যারন ব্র্যাজার

1
:head:সর্বাধিক প্রতিশ্রুতিবদ্ধ নির্দেশ, কিন্তু আপনি ব্যবহার করতে পারবেন না :gitএবং :headএকই লাইনে।
অ্যারন ব্র্যাজার

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

2
@ আরনব্রেজার এটি দেখিয়ে দিচ্ছে "'<পড নাম>'" এর জন্য কোনও স্পেসিফিকেশন খুঁজে পেতে অক্ষম "আপনি কীভাবে এটি সমাধান করবেন জানেন?
সুসিম সামন্ত

34

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

pod 'AFNetworking', :path => '~/Documents/AFNetworking'

কোকোপডস ডকুমেন্টেশন: http://guides.cocoapods.org/used/the-podfile.html# using-the-files-from-a-folder-local-to-the-machine

এখানে চিত্র বর্ণনা লিখুন


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