আমি আমার বিশ্ববিদ্যালয়ের একটি সার্ভারে একটি অ্যাকাউন্ট পেয়েছি। আমি অন্য শিক্ষার্থীর সাথে একটি প্রোগ্রামের কোডটি ভাগ করতে চাই। আমি ভেবেছিলাম আমার গিথুব অ্যাকাউন্টে এটি রাখা উচিত। দুর্ভাগ্যক্রমে, কোডটি একটি প্রতিযোগিতার অংশ হিসাবে আমি করতে পারছি না।
আমি একটি মেকফিল তৈরি করার সিদ্ধান্ত নিয়েছি যাতে আমরা সহজেই ফাইলগুলি আপলোড এবং ডাউনলোড করতে পারি। কিছুক্ষণ পরে অবশেষে বুঝতে পারলাম যে যথেষ্ট নয়। তারপরে আমি প্যাচ সিস্টেমটি প্রয়োগ করেছি যাতে কেবল পরিবর্তনগুলি সংরক্ষণ করা যায়। ছোট একযোগে পরিবর্তনগুলি নিয়ে কোনও সমস্যা হওয়া উচিত নয়।
মেকফিল প্রায় কাজটি করে তবে এমন কিছু বিশদ রয়েছে যা আমি সমাধান করতে পারি না। দ্য মেকফিল
all: download
PHONY: all, download, upload, getFiles
.ONESHELL:
getFiles:
rm ../.tmp -r
mkdir ../.tmp
@(ssh $(user)@host "tar c *") | tar xv -C ../.tmp
download: getFiles
@diff -u ../.tmp . | patch -p1
rm ../.tmp -r
upload: getFiles
@diff -uN ../.tmp . | (ssh $(user)@host "patch -p1")
rm ../.tmp -r
আমি হোস্ট থেকে সমস্ত ডেটা সরিয়েছি। এখন আমি আপলোড করতে চাই তবে টারগুলি প্রোগ্রামটি বন্ধ করে দেয় কারণ পরিবর্তনগুলি অনুসন্ধানের জন্য ডাউনলোড করার জন্য কোনও ফাইল নেই।
তদুপরি, আমি আমার মনটি এই ক্ষেত্রে তৈরি করতে পারি না: আমি কী আলাদা -N ব্যবহার করতে পারি? সহজভাবে, আমি জানি না যে আমি যখন কোনও ফাইল মুছি তখন এটি কীভাবে আচরণ করে।
আরও একটি সমস্যা আছে: যখন কিছু ভুল হয়ে যায় তখন .tmp ডিরেক্টরিটি সরানো হয় না। ডিরেক্টরিটি প্রতিবার মুছে ফেলা উচিত। পরবর্তী ক্রিয়া সর্বদা বর্তমান "সংগ্রহস্থল" স্থিতি ডাউনলোড করে।
আমি এটি সম্পূর্ণরূপে স্বীকৃতি দিয়েছি এটি কোনও সংগ্রহস্থল নয়, তবে আমি দূরবর্তী হোস্টে একটি সার্ভার প্রোগ্রাম সেটআপ করতে পারি না এবং আমি মনে করি মেকফিল আমার পক্ষে কাজটি করবে।
কোনও ইঙ্গিত প্রশংসা করা হবে।