তৈরি করুন: আমার নিজস্ব সহজ সংগ্রহস্থল


1

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

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

মেকফিল প্রায় কাজটি করে তবে এমন কিছু বিশদ রয়েছে যা আমি সমাধান করতে পারি না। দ্য মেকফিল

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 ডিরেক্টরিটি সরানো হয় না। ডিরেক্টরিটি প্রতিবার মুছে ফেলা উচিত। পরবর্তী ক্রিয়া সর্বদা বর্তমান "সংগ্রহস্থল" স্থিতি ডাউনলোড করে।

আমি এটি সম্পূর্ণরূপে স্বীকৃতি দিয়েছি এটি কোনও সংগ্রহস্থল নয়, তবে আমি দূরবর্তী হোস্টে একটি সার্ভার প্রোগ্রাম সেটআপ করতে পারি না এবং আমি মনে করি মেকফিল আমার পক্ষে কাজটি করবে।

কোনও ইঙ্গিত প্রশংসা করা হবে।


আপনি কি ইমেলের মাধ্যমে প্যাচগুলি প্রেরণ বিবেচনা করেছেন?
ড্যানিয়েল বেক

না, আমি মনে করি মেকফাইল ব্যবহার করা আরও অনেক সুবিধাজনক।
প্রভু.ডিজার

@ লর্ড.ডিজার: ড্যানিয়েলের অর্থ "আপনি গিট-ফর্ম্যাট-প্যাচ / গিট-সেন্ড মেল" ব্যবহার করার কথা বিবেচনা করেছেন "... এবং এটি কমিট-হুকের সাথে মিল রেখে।
আকির

1
এসএসএইচ-এর উপর গিট সংগ্রহস্থল ব্যবহার করছেন না কেন?
সিউরাস

1
ইমেল উপর গিট? যে সেরা বিকল্প হবে। দুর্ভাগ্যক্রমে, আমি গিট সম্পর্কে খুব প্রাথমিক জ্ঞান আছে। ইমেলের মাধ্যমে কীভাবে গিট ফায়ার করতে হবে তা জানতে কিছু সময় লাগবে। @ সাইরাস: এসএসএস-এর চেয়ে বেশি? তুমি কি মনে কর?
প্রভু.ডিজার

উত্তর:


1

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

-include name

all: download
PHONY: all, download, upload, getFiles

DIFFFLAGS = -uNr

.ONESHELL:
getFiles:
    rm .tmp -r
    mkdir .tmp
    (ssh $(user)@$(HOST) "tar c ") | tar xv -C .tmp

download: getFiles
        diff $(DIFFFLAGS) program .tmp/roboty | patch -p1 -d program

upload: getFiles
    diff $(DIFFFLAGS) .tmp/roboty program | (ssh $(user)@$(HOST) "umask 070 && patch -p1")

patch-extern:
    diff $(DIFFFLAGS) program program-workplace | patch -p1 -d program

patch-local:
    diff $(DIFFFLAGS) program program-workplace | patch -p1 -dR program-workplace

backup:
    tar cf backup.tar program-workplace

.ONESHELL:
clear:
    rm `find program-workplace/ -name "*~"`
    rm `find program-workplace/ -name "*.class"`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.