লিনাক্স এবং এসভিএন: কীভাবে সমস্ত সংস্করণযুক্ত ফাইলগুলি কেপ করুন ডিরেক্টরি কাঠামো, .svn ডায়ারকে উপেক্ষা করবেন?


9

আমি আমার সংগ্রহশালা থেকে সমস্ত সংস্করণযুক্ত ফাইলগুলি সরাতে চাই, তবে সংস্করণযুক্ত ডিরেক্টরি কাঠামোটি রাখি। স্পষ্টতই আমি সমস্ত .svn ডিরেক্টরিটি ছোঁয়া ছেড়ে দিতে চাই।

অন্য কথায়, আমি নিজেই ডিরেক্টরি কাঠামোর ক্ষতি না করেই একটি ওয়ার্কিং কপির ডিরেক্টরী কাঠামো পুরোপুরি খালি করতে চাই।

উদাহরণস্বরূপ, এই কাঠামো থেকে ফাইলগুলি সরানো:

dir/
    .svn/
        [files]
    svsubdir1/
        file1
        .svn/
            [files]
    subdir2/
        file2
        file3
        file4
        .svn/
            [files]
        subsubdir1/
            file5
            .svn/
                [files]

ফলাফল হওয়া উচিত:

dir/
    .svn/
        [files]
    svsubdir1/
        .svn/
            [files]
    subdir2/
        .svn/
            [files]
        subsubdir1/
            .svn/
                [files]

আমি findএটি সম্পাদন করার জন্য কিছু কমান্ড বা কিছু সন্ধান করছি এবং কমান্ডটি তৈরি করতে আমার সমস্যা হচ্ছে। সাহায্যের জন্য ধন্যবাদ!


আমি এটি করার কারণটি হ'ল আমার কাছে একটি ওয়েব অ্যাপ্লিকেশন রয়েছে যা "সংস্করণ" এ বিকাশ করা হয়েছে তবে এর আগে কখনও সংশোধন নিয়ন্ত্রণে ছিল না। আমি এখন এটি এসভিএন পুনর্বিবেচনা নিয়ন্ত্রণের অধীনে রাখতে চাই এবং historicalতিহাসিক রেফারেন্স ইত্যাদির স্বাচ্ছন্দ্যে আমি প্রগতিশীল পুরানো সংস্করণযুক্ত চারটি পৃথক "ব্যাকআপ" ফোল্ডার থেকে চারটি সংস্করণের অগ্রগতির প্রতিরূপ তৈরি করার চেষ্টা করছি। ফাইলগুলি মুছে ফেলা হয়ে গেলে, আমি নতুন সংশোধন অনুকরণের জন্য নতুন ফাইলগুলি হায়ারার্কিতে অনুলিপি করতে পারি। নিশ্চিত যে নিশ্চিত না যে সমস্ত বোঝার। :)
ব্রায়ান লেসি

1
এটি লক্ষনীয় যে SVN সংস্করণ 1.7 (অক্টোবর 2011) থেকে আর একাধিক ".svn" ডিরেক্টরি নেই, তবে শীর্ষ স্তরে কেবল একটি .svn dir। Subversion.apache.org/docs/release-notes/1.7.html#wc-ng
ধনী

উত্তর:


10
find dir/ -path '*/.svn' -prune -o -type f -print

বিলটি ফিট করা উচিত (বেশিরভাগ ক্ষেত্রে ম্যানপেজটি সন্ধানের জন্য আসে -path)। এটি কম পাইপ এবং এটি পরীক্ষা করে দেখুন। এটি যা করে তা প্রথম খুঁজে পাওয়া যায় (পথটি .svn এ শেষ হয় এবং এই ডিরেক্টরিতে পুনরায় ছাঁটাই করা হয় না) বা (এটি যদি কোনও ফাইল হয় তবে এটি মুদ্রণ করুন)।

যদি এটি দেখতে ভাল লাগে তবে এটিকে পরিবর্তন করুন

find dir/ -path '*/.svn' -prune -o -type f -exec rm {} +

সংস্করণ সমস্ত ফাইল একসাথে একটি আরএম কমান্ডে আটকে দেয়। আপনি যদি ভৌতিক হয়ে থাকেন তবে cp -a dir/ otherdir/প্রথমে গাছের একটি ব্যাকআপ রাখুন )


নিখুঁত সমাধান, এটাই আমার প্রয়োজন ছিল! ধন্যবাদ ডিআরপি!
ব্রায়ান লেসি

'-Exec rm place} +' এর জায়গায় আপনি আরও স্বজ্ঞাত '-ডিলিট' বিকল্পটি ব্যবহার করতে পারেন।
টিম বিলাওয়া

1
@ টিম অনুসন্ধান ম্যানপেজ অনুসারে, -deleteগভীরতা-প্রথম এবং তাই -pruneফোল্ডারের ভিতরে থাকা ফাইলগুলি ফোল্ডারটি খতিয়ে দেখার আগে পরীক্ষা করা হত কারণ এর সাথে দ্বন্দ্ব রয়েছে । অন্যান্য সমাধান (এর -not -path ...পরিবর্তে -path ... -pruneব্যবহার করে
অপসারণ

চমৎকার ধরা!
টিম বিলাওয়া

আমি কয়েক বছর ধরে এই কৌশলটি (বা অনুরূপ) বহুবার বিভিন্ন পরিস্থিতিতে ব্যবহার করেছি। তাই আবার ধন্যবাদ, @ ডারফকে। :)
ব্রায়ান লেসি

2
অনুসন্ধান . -নটপথ "* /। এসএনএন / *" -আর-টাইপ এফ-এবং-এক্সেক / বিন / আরএম '{}' \;

কৌতুক করা উচিত।


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