সমস্ত এসএনএন তালিকা: বহিরাগত পুনরাবৃত্তি?


94

আমি কীভাবে একটি ডিরেক্টরিতে সমস্ত এসএনএন: এক্সটার্নালস (পুনরাবৃত্তভাবে) তালিকা পেতে পারি? এর কোন উপযোগিতা আছে কি?

(আমি উইন্ডোজ ব্যবহার করছি (এবং কচ্ছপ))

আমার কাছে একগুচ্ছ এসএনএন রয়েছে: বহিরাগতরা আমার প্রকল্পের বিভিন্ন ভাগ করা অংশগুলির সাথে সংযোগ স্থাপন করে এবং আমি যখন শাখা করি তখন সাধারণত সমস্ত বাহ্যিক সন্ধান করার জন্য যথেষ্ট ত্রুটি থাকে এবং সেগুলি পরিবর্তন করে যাতে নতুন শাখায় পাথের লিঙ্ক।


উত্তর:


147

আপনার কাজের অনুলিপিটির মূলটিতে নিম্নলিখিতটি করুন:

svn propget svn:externals -R

নীচের মন্তব্যে আলোচিত হিসাবে, এটি বাহ্যিক ক্ষেত্রে বাহ্যিক তালিকাবদ্ধ করে না।

কচ্ছপ এসভিএন ব্যবহারকারীদের জন্য নোট: এসটিএন কমান্ড লাইন ক্লায়েন্ট ইনস্টল করার জন্য কচ্ছপ এসভিএন ইনস্টলারে একটি বিকল্প রয়েছে। এই বিকল্পটি ডিফল্টরূপে সক্ষম নয়।


এটি কেবল আমাকে সমস্ত বাহ্যিকের তালিকা দেয় এবং যেখানে তারা নির্দেশ করে .. তবে বাহ্যিকের 'অবস্থান' নয় .. অর্থাত্ যদি আমার বাহ্যিক হিসাবে আমার \ মাই_এক্স থাকে তবে আমি কেবল আমার_এক্স http: / svnlinkhere
ShoeLace

4
@ShoeLace: আপনি একটি পুরোনো SVN সঙ্গে কাজ করা আবশ্যক কারণ 1.6.1 আউটপুট করে এই তথ্য ধারণ করে।
উইম কোয়েন

4
দুঃখিত তবে আমাকে এটিকে ডাউন-ভোট দিতে হবে) ক) এটি সমস্ত বাহ্যিক ফলাফল দেবে না ; FX, যদি আমরা ফোল্ডারে বহিরাগত আছে এবং সেখানে এই ফোল্ডারটি ভিতরে একটি বহিস্থিত কোথাও - এই পর্যন্ত খ দেখাবে না) প্রশ্ন বাঁধা কচ্ছপের SVN, কিন্তু উত্তর কমান্ড লাইন ক্লায়েন্ট সঙ্গে সম্পর্কযুক্ত
pmod

4
@ পিএমডি: ক) আমি এটি জানতাম না তবে এটি আমার পক্ষে ত্রুটির চেয়ে এসভিএন বাগের মতো বলে মনে হচ্ছে। খ) কচ্ছপ এসভিএন 1.7 ইনস্টলারটিতে কমান্ড লাইন ক্লায়েন্ট অন্তর্ভুক্ত রয়েছে !
উইম কয়েন

4
পুনরুক্তি হ'ল ওয়ার্কিং কপিটির ফোল্ডার কাঠামোর সাথে আপনি যেখানে কমান্ডটি প্রেরণ করেন। বাহ্যিক অভ্যন্তরের অভ্যন্তরীণ বাহ্যিকদের ক্ষেত্রে এটি শ্রদ্ধার সাথে নয়। সুতরাং আমি এটি একটি বাগ মনে করি না। অন্যথায়, এটি মেয়াদের ক্ষেত্রে ক্রিয়াকলাপটিকে আরও বেশি ব্যবহারযোগ্য করে তুলবে।
ফ্রাঙ্ক

15

ম্যানুয়ালি external সমস্ত বাহ্যিক বৈশিষ্ট্য পরিবর্তন করা ক্লান্তিকর শোনায়। আপনি কি সাবভার্সন 1.5 তে যুক্ত হওয়া বহিরাগতদের জন্য নতুন কার্যকারিতাটি দেখেছেন ?

সাবভারশন 1.5 এই হতাশাগুলি দূর করতে একটি বিশাল পদক্ষেপ নেয়। পূর্বে উল্লিখিত হিসাবে, নতুন বহিরাগত সংজ্ঞা বিন্যাসে ব্যবহৃত ইউআরএলগুলি আপেক্ষিক হতে পারে এবং সাবভার্সিয়ন ইউআরএল আপেক্ষিকতার একাধিক স্বাদ নির্দিষ্ট করার জন্য সিনট্যাক্স ম্যাজিক সরবরাহ করে।

../

    যে ডিরেক্টরিতে svn: বাহ্যিক সম্পত্তি সেট করা আছে সেই URL এর সাথে সম্পর্কিত

^ /

    ভান্ডারটির মূলের সাথে সম্পর্কিত যেখানে svn: বহিরাগত সম্পত্তি সংস্করণযুক্ত

//

    ডিরেক্টরিতে যে ডিরেক্টরিতে svn: এক্সটার্নাল সম্পত্তি সেট করা হয়েছে তার URL এর স্কিমের সাথে সম্পর্কিত

/

    সার্ভারের মূল ইউআরএল সম্পর্কিত যার উপর এসএনএন: বহিরাগত সম্পত্তি সংস্করণযুক্ত

তাদের মধ্যে কেউ সাহায্য করতে পারে? আমি অনুমান করি এটি নির্ভর করে আপনি কীভাবে শাখা করছেন এবং আপনার সংগ্রহশালা কাঠামোটি কেমন দেখাচ্ছে।


9

কচ্ছপ এসভিএন এর জন্য আমার কার্যনির্বাহী:

এসভিএন প্রসঙ্গ মেনু থেকে "শাখা / ট্যাগ ..." ডায়ালগটি খুলুন। নীচের ডায়লগটি নেস্টেড এক্সটার্নালস সহ সমস্ত বাহ্যিক দেখায়।


দেখে মনে হচ্ছে কচ্ছপ এসভিএন পুনরাবৃত্তভাবে এসএনএন: এক্সটার্নাল এসএনএন-এক্সটার্নালগুলির সন্ধান করে না, তাই এটি করার মতোই svn propget svn:externals -R
পাওলি 4

0

হতে পারে, একটি কর্মক্ষেত্র হিসাবে, আপনি আপনার প্রকল্পটি এমনভাবে গঠন করতে পারেন যে সমস্ত বাহ্যিকগুলি একই ফোল্ডারে সেট করা থাকে, উদাহরণস্বরূপ ট্রাঙ্কের ঠিক নীচে প্রকল্প ফোল্ডারে। (এর অর্থ এই নয় যে সমস্ত বাহ্যিক ফোল্ডারগুলি পাশাপাশি একই গভীরতায় থাকতে হবে)) তারপরে আপনি আপনার প্রকল্প ফোল্ডারে ডান ক্লিক করতে পারেন, তারপরে বৈশিষ্ট্য ..., তারপরে ট্যাব সাবভার্সন, তারপরে বৈশিষ্ট্যগুলি ... তারপরে ডাবল ক্লিক করুন এসএনএন: বহিরাগত।


0

আমি উইম কোয়েনের উত্তর ব্যবহার করেছি এবং সমস্ত সংশোধনীর একটি তালিকা তৈরি করতে নিম্নলিখিত স্ক্রিপ্টটি লিখেছি:

getSvnRevs() {
  cd "$1"
  wcver="$(svnversion)"
  [ -n "$wcver" ] || panic "Unable to get version for $wcdir"
  echo "$1: $wcver"
  svn propget svn:externals -R | while read a b c d e; do
    [ -n "$a" ] || continue
    if [ "$b" = "-" ]; then
      wcparent="$a"
      wcdir="$wcparent/$c"
      [ -z "$e" ] || panic "Invalid format #1"
    else
      [ -n "$wcparent" ] || panic "Invalid format #2"
      wcdir="$wcparent/$a"
      [ -z "$c" ] || panic "Invalid format #3"
    fi
    [ -d "$wcdir" ] || panic "Invalid directory: $wcdir"
    wcver="$(svnversion "$wcdir")"
    [ -n "$wcver" ] || panic "Unable to get version for $wcdir"
    echo "$1/$wcdir: $wcver"
  done
}

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

অস্বীকৃতি: আমি জানি যে আসল প্রশ্নটি উইন্ডোজ সম্পর্কে ছিল এবং আপনি সাইগউইন বা অনুরূপ ব্যবহার না করে শেল স্ক্রিপ্ট সেখানে কাজ করবে না।


0

আমি ড্যানিয়েল অ্যাল্ডারের উত্তর নিয়েছি, এসএনভিভার্সন কলগুলি সরিয়েছি এবং এটি পুনরাবৃত্ত করে তুলেছি (দ্রষ্টব্য: read a b c d eউত্স বা গন্তব্যস্থলে কোনও স্থান থাকলে কাজ করে না)। এটি একটি বাশ স্ক্রিপ্ট, সুতরাং আপনার কাছে হয় সাইগউইনের মতো কিছু দরকার হয় অথবা লিনাক্সের জন্য উইন্ডোজ সাবসিস্টেম ব্যবহার করতে পারেন ।

getSvnExternals() {
  svnbase="$1"
  svnpath="$2"
  svn propget svn:externals -R "$svnbase/$svnpath" 2> /dev/null | while read a b c d e; do
    [ -n "$a" ] || continue
    if [ "$b" = "-" ]; then
      wcparent="$a"
      external="$c"
      wcdir=$(echo "$wcparent/$d" | sed s#^./##)
      [ -z "$e" ] || echo "WARNING: Invalid format #1. line='$a $b $c $d $e'"
    else
      [ -n "$wcparent" ] || echo "WARNING: Invalid format #2. wcparent=$wcparent"
      external="$a"
      wcdir=$(echo "$wcparent/$b" | sed s#^./##)
      [ -z "$c" ] || echo "WARNING: Invalid format #3. line='$a $b $c $d $e'"
    fi
    echo "$1/$wcdir: $external"
    ## recurse into external directory
    [ -d "$wcdir" ] && getSvnExternals "$1/$wcdir"
  done
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.