ক্যাচিং সহ প্রজেক্টাইল নতুন ফাইল পছন্দ করে না


9

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

আমি যদি ইমাসের বাইরে নিজেই একটি নতুন ফাইল তৈরি করি তবে অনুমানটি এটি খুঁজে পায় না। আমি ক্যাশে অবৈধতা চালাতে পারি তবে এতে কয়েক মিনিট সময় লাগে। কিভাবে এটি ঠিক করবেন?


আপনি ফাইলটি খুলতে এবং ম্যানুয়ালি এটি ক্যাশে যুক্ত করতে পারেন M-x projectile-cache-current-file। আপনি যদি না চান তবে ইমাসকে অবশ্যই ফাইলের সন্ধানে পুরো গাছটি অতিক্রম করতে হবে, সুতরাং কোনও অপ্টিমাইজেশন করা যায় না।
পাইথননট

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

উত্তর:


4

প্রিফিক্স আর্গুমেন্টটি ব্যবহার করুন, অর্থাত্ C-u C-c p fপ্রকল্পটিকে দ্রুত অকার্যকর করতে এবং এটি সন্ধান করতে। ব্যবহার সম্পর্কে মন্তব্যে দেওয়া পরামর্শটি projectile-cache-current-fileপ্রযুক্তিগতভাবে সঠিক, তবে একটি হুক রয়েছে find-fileযা খালি প্রতিটি নতুন ফাইলটিতে স্বয়ংক্রিয়ভাবে এটিকে কল করে। বিদ্যমান ক্যাশেটি অবৈধ না করে এটিই দ্রুত সমাধান হবে।

তবে এটি মনে হচ্ছে আসল সমস্যাটি গাছটিকে অনুসরণ করে ক্যাশেটি পুনর্নির্মাণ করতে খুব বেশি সময় নেয়। এটির জন্য আপনার পরিবেশ সম্পর্কে আরও কিছু তথ্য থাকলে এটি সহায়তা করবে। ডিফল্টরূপে উইন্ডোজগুলিতে projectile-indexing-methodসেট করা 'nativeথাকে যা findএটি আরও পোর্টেবল হওয়ায় একটি এলিস্প বাস্তবায়ন পছন্দ করে । তা না হলে এটি একটি ব্যবহার 'alienপদ্ধতি, অর্থাত git ls, findইত্যাদি আপনি উপর লিনাক্স পরক পদ্ধতি ডিফল্ট যদিও দ্বারা সক্রিয় করা হয়।

তা না হলে তোমাদের শশকের গর্ত নিচে পেছনে তাড়া করতে চাইতে পারেন projectile-get-repo-filesএবং projectile-get-ext-command। তারা নির্দিষ্ট করে যেখানে প্রজেক্টাইল ফাইলগুলির তালিকার সন্ধান করে। এটি সম্ভব আপনি ডিয়ার-লোকাল বা একটি দ্রুত দেখার পদ্ধতি জোর করে পছন্দ করার মাধ্যমে এটিকে ওভাররাইড করতে পারেন।


2

এটি ফাইল ক্যাচিংকে গতি দেয় না তবে এটি বাসি ক্যাশে (যা নতুন ফাইল ধারণ করে না) অকার্যকর করার ম্যানুয়াল পদক্ষেপটি সংরক্ষণ করে।

প্রজেক্টাইল /your/projectile/project/root/.projectileফাইলটি প্রকল্প ক্যাশে ফাইলের চেয়ে নতুন হলে স্বয়ংক্রিয়ভাবে ক্যাশেটিকে অকার্যকর করে দেয় ।

আপনি যখন প্রজেক্টাইল ব্যবহার করে প্রকল্পের কোনও ফাইল সন্ধান করার চেষ্টা করেন তখন এই চেকটি করা হয়; projectile-find-fileবা C-c p fকমান্ডগুলির মধ্যে একটি যদি এটি প্রথমে চেক করে।

(defun projectile-maybe-invalidate-cache (force)
  "Invalidate if FORCE or project's dirconfig newer than cache."
  (when (or force (file-newer-than-file-p (projectile-dirconfig-file)
                                           projectile-cache-file))
    (projectile-invalidate-cache nil)))

- projectile.elউত্স থেকে - লাইনগুলি 575-579

সুতরাং আপনি যখন প্রকল্পটি আপডেট করবেন তখন সমাধানটি ফাইলের সাথে touchহয় .projectile। উদাহরণস্বরূপ, যদি আপনি করতে পারেন , ইত্যাদি করতেaliasgit commitgit pull

touch /your/projectile/project/root/.projectile` 

gitকমান্ডগুলি দিয়ে যা যা করছিল তা করার পরে ।

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

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