আমি কীভাবে আমার এএসপি.এনইটি ওয়েব সাইটের সাথে এসভিএন সংশোধন নম্বর সিঙ্ক করব?


95

স্ট্যাক ওভারফ্লো নীচে একটি subversion সংস্করণ নম্বর আছে:

এসএনএন সংশোধন: 679

আমি আমার .NET Web Site/Application, উইন্ডোজ ফর্ম, ডাব্লুপিডি প্রকল্প / সমাধানগুলির সাথে এই জাতীয় স্বয়ংক্রিয় সংস্করণ ব্যবহার করতে চাই ।

আমি কীভাবে এটি বাস্তবায়ন করব?


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

আপনি SubWCRev জন্য টরটয়েজএসভিএন ব্যবহার করে না থাকেন মত আমি বললাম এখানে , আপনি ব্যবহার করতে পারেন svnversion যা একই জিনিস আছে।
নিকফ

উত্তর:


31

দেখে মনে হচ্ছে জেফ ক্রডকন্ট্রোল.এনইটি পডকাস্ট ট্রান্সক্রিপ্টগুলির মাধ্যমে কিছু লিফিংয়ের উপর ভিত্তি করে ব্যবহার করছে । উত্স নিয়ন্ত্রণ থেকে উত্পাদনে এটি স্বয়ংক্রিয় স্থাপনার ক্ষমতা রয়েছে বলে মনে হয়। সন্নিবেশ ঘটছে যেখানে এটি হতে পারে?


4
- আপনি CruiseControl.Net ব্যবহার করছেন না, তাহলে আমার উত্তর (লজ্জাহীন প্লাগ!) খুঁজে বার করো stackoverflow.com/questions/163/... ণ);
অ্যান্ড্রু

লিঙ্কটি ভাঙ্গা হয়েছে @ সৈেন্ট_গ্রোসন
সান্তা

27

আমরা আমাদের স্বয়ংক্রিয় বিল্ডগুলির জন্য xUnit.net এর সাথে এটি করি । আমরা ব্যবহার করি CruiseControl.net(এবং টিমসিটি চেষ্টা করছি)। অবিচ্ছিন্ন একীকরণের জন্য আমরা যে এমএস বিল্ড টাস্কটি চালাচ্ছি তা স্বয়ংক্রিয়ভাবে আমাদের জন্য বিল্ড নম্বর পরিবর্তন করে, ফলস্বরূপ বিল্ড জিপ ফাইলটি ডিএলএল এবং এএসইসগুলির একটি যথাযথ সংস্করণযুক্ত সেট থাকে।

আমাদের এমএসবিল্ড ফাইলটিতে একটি ডিএলএল এর জন্য ইউজিংটাস্ক রেফারেন্স রয়েছে যা নিয়মিত এক্সপ্রেশন প্রতিস্থাপন করে: (এমএস-পিএল লাইসেন্সের আওতাধীন আপনাকেও এই ডিএলএল ব্যবহার করতে স্বাগত জানাই)

  <ইউজিং টাস্ক
     সমাবেশফিল = "তৃতীয় পক্ষ art কোডপ্লেক্স.এমএস বিল্ডটাস্কস.ডিএল"
     TaskName = "CodePlex.MSBuildTasks.RegexReplace" />

এর পরে, আমরা বিল্ড নম্বরটি বের করি, যা সিআই সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে সরবরাহ করা হয়। আপনি চাইলে আপনার উত্স নিয়ন্ত্রণ সরবরাহকারীর উত্স পুনর্বিবেচনা নম্বর সরবরাহ করতেও পেতে পারেন তবে আমরা দেখতে পেয়েছি সিআই সিস্টেমে বিল্ডটি আরও কার্যকর ছিল, কারণ কেবলমাত্র সিআই বিল্ড সংখ্যার দ্বারা ইন্টিগ্রেশন ফলাফলগুলি দেখতে পাবে না এটি একটি সরবরাহও করে পুনর্নির্মাণ (গুলি) -এ ফিরে লিঙ্ক করুন যা বিল্ডে অন্তর্ভুক্ত ছিল।

 <! - ক্যাসকেডিং একটি বিল্ড নম্বর -> খুঁজে পাওয়ার চেষ্টা করে

 <সম্পত্তি গোষ্ঠী শর্ত = "'$ (বিল্ডনম্বার)' == ''">
   <বিল্ড নাম্বার> B (বিল্ড_বিম্ব) </ বিল্ডবার্বার>
 </PropertyGroup>
 <সম্পত্তি গোষ্ঠী শর্ত = "'$ (বিল্ডনম্বার)' == ''">
   <বিল্ড নাম্বার> $ (সিসনেটবেল) </ বিল্ডবার্বার>
 </PropertyGroup>
 <সম্পত্তি গোষ্ঠী শর্ত = "'$ (বিল্ডনম্বার)' == ''">
   <বিল্ড নাম্বার> 0 <বিল্ডবার্বার>
 </PropertyGroup>

(আমরা BUILD_NUMBER চেষ্টা করি যা টিমসিটি থেকে, তারপরে সিসনেটবেল, যা সিসি নেট থেকে আসে এবং যদি না উপস্থিত থাকে তবে আমরা ডিফল্টে 0 এ চলে যাই, যাতে আমরা স্বয়ংক্রিয়ভাবে বিল্ড স্ক্রিপ্টটি ম্যানুয়ালি পরীক্ষা করতে পারি))

এরপরে, আমাদের একটি টাস্ক রয়েছে যা আমাদের সমস্ত প্রকল্পের সাথে সংযুক্ত একটি গ্লোবালঅ্যাস্পেলারআইএনফো ফাইলগুলিতে বিল্ড নম্বর সেট করে:

 <লক্ষ্য নাম = "সেট ভার্সন নাম্বার">
   <রিজেক্সেরপ্লেস
       প্যাটার্ন = 'এসেম্বলি ভার্সন \ ("(\ d + \। \ D + \। \ D +) \। \ D +" \)'
       প্রতিস্থাপন = 'এসেম্বলি ভার্সন ("$ 1। Build (বিল্ডনিবার)"))'
       ফাইলগুলি = 'গ্লোবালঅ্যাস্পেইশনআইনফো.কম' />
   <এক্সিকিউট কমান্ড = "বৈশিষ্ট্য -r xunit.installer \ App.manifest" />
 </target>

এটি অ্যাসেম্বলি ভার্সন বৈশিষ্ট্যটি সন্ধান করে এবং abcBuildNumber এর সাথে abcd সংস্করণ নম্বরটি প্রতিস্থাপন করে। আমরা সাধারণত নির্মাতা সংখ্যার প্রথম তিনটি অংশ স্থির করে গাছটিতে চেক করা উত্সটি ছেড়ে দেব এবং চতুর্থটি শূন্যে (ফে, আজ এটি 1.0.2.0)।

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


25

আপনি আপনার কোডের যে কোনও জায়গায় নিম্নলিখিতগুলি যুক্ত করে এটি করতে পারেন

$Id:$

সুতরাং উদাহরণস্বরূপ @ জেফ করেছেন:

<div id="svnrevision">svn revision: $Id:$</div>

এবং সার্ভারে চেক করা হলে বর্তমান সংশোধন নম্বর সহ $ আইডি: replaced প্রতিস্থাপন করা হয়েছে। আমি এই রেফারেন্সটিও পেয়েছি

এছাড়াও রয়েছে $ তারিখ: $ , $ রেভ: $ , ision সংশোধন: $ $


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

4
আমি কেবল $ রেভ $ ব্যবহার করে এটি চেষ্টা করেছি এবং এটি কিছুটা কাজ করে works সমস্যাটি হ'ল এটি প্রদর্শিত কীওয়ার্ডটি আপডেট করার সময় উপস্থিত হয় ফাইলটিতে এটি প্রদর্শিত হয়। এর অর্থ হ'ল যদি সেই প্রকল্পে পরিবর্তন করা হয় যা এতে $ রেভ with দিয়ে ফাইলটিকে প্রভাবিত করে না (আমার ক্ষেত্রে, আমার এএসপি.এনইটি মাস্টার পৃষ্ঠা), তবে প্রকল্পটির ব্যবহারকারীর কাছে প্রদর্শিত হওয়ার চেয়ে আরও বেশি সংশোধন হবে । এ নিয়ে কারও কি কোন চিন্তাভাবনা আছে? ফাইলের কীওয়ার্ডগুলি সর্বদা আপডেট করার জন্য কি এসভিএন পাওয়ার কোনও উপায় আছে ?
ক্রিস রবার্টস

5
এটি কি কেবলমাত্র সেই নির্দিষ্ট ফাইলটিতে সর্বশেষ পরিবর্তনের সংশোধন নম্বরটি সন্নিবেশ করবে না? আমি একটি দ্বি-ফাইলের সংগ্রহস্থল স্থাপন করার চেষ্টা করেছি এবং একটিতে পরিবর্তন করেছি, এবং উভয় ক্ষেত্রে রফতানি এবং চেকআউট চেষ্টা করেছি এবং অন্য ফাইলটি উভয় ক্ষেত্রেই 1 এ অবস্থান করে।
লাসে ভি কার্লসেন

লাসেভেক সঠিক, ফাইলটি নিজেই পরিবর্তন হলে এটি কেবল পরিবর্তন হয়।
ব্রুনো লোপস

ভিজ্যুয়ালএসভিএন এবং কচ্ছপ এসভিএন ব্যবহার করে, $ আইডি: adding যুক্ত করে পৃষ্ঠাটি কেবল "$ আইডি: $" রেন্ডার করে। এই উত্তরটি কোন সার্ভার / ক্লায়েন্টের অধীনে কাজ করে তা লক্ষ্য করা কার্যকর হতে পারে।
ট্র্যাভিস

17

আপনি যদি ব্যবহার করছেন ASP.Net MVC(স্ট্যাকওভারফ্লো যেমন করে) তবে আমি কীভাবে স্বয়ংক্রিয়ভাবে পেতে এবং সর্বশেষ এসভিএন সংশোধন প্রদর্শন করতে পারি তার জন্য 3-পদক্ষেপ গাইড অনুসরণ করার জন্য একটি সহজ লিখেছি । গাইডটি আমার কাছে এই প্রশ্নটিই ভেবে অনুপ্রাণিত হয়েছিল! : ও)


দুর্দান্ত লাগছে, যদিও লিঙ্কটি ভেঙে গেছে!
পিটার সি

4
আমাদের এসভিএন সংশোধনগুলির উপর ভিত্তি করে কোনও সংস্করণ প্রদর্শন স্বয়ংক্রিয় করার জন্য এটি আমাদের জন্য দুর্দান্ত সমাধান ছিল। একটি সুবিধা হ'ল এটির জন্য আপনার এসভিএন সার্ভারে কোনও কল প্রয়োজন হয় না।
বেন বয়স্ক

লিঙ্কটি ভাঙা হয়েছে, বা সাইটটি ডাউন রয়েছে
কচো সান্তা

4
ধন্যবাদ @ কচো, স্থির - এটি একটি সার্ভার ত্রুটি ছিল [sic]; ও)
অ্যান্ড্রু

10

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


9

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

এই ক্ষেত্রে আমি ধরে নিয়েছি যে সিসিএনইটি প্রকল্পের সংশোধন নম্বরটি টানছে এবং সেই পৃষ্ঠাটি দিয়ে ওয়েবপৃষ্ঠার একটি অংশ পুনরায় লিখছে। যে কোনও সিআই সলিউশন এটি করতে সক্ষম হতে হবে, সিসিএনইটি এবং টিমসিটি দিয়ে নিজেকে সেট আপ করুন (যদিও ওয়েবপৃষ্ঠাগুলি নয়, তবে স্থাপনার / সমাবেশের সংস্করণগুলির স্বয়ংক্রিয় সংস্করণ)।

আপনার এটি করার জন্য, এটির সমর্থন করে এমন একটি সিআই সমাধান ব্যবহার করুন বা আপনার সংস্করণটি সংরক্ষণের জন্য বিল্ড প্রক্রিয়া (এমএসবিল্ড / ন্যান্ট) ব্যবহার করুন এবং এটি "স্থাপনার" আগে ফাইলগুলিতে লিখুন।


5

@ ব্র্যাডউইলসনের উত্তরে যুক্ত করতে: "আপনি চাইলে আপনার উত্স নিয়ন্ত্রণ সরবরাহকারীর উত্স পুনর্বিবেচনা নম্বর সরবরাহ করতেও পারেন"

সাবভারশন এবং এমএস বিল্ডকে সংযুক্ত করতে: এমএসবিল্ড কমিউনিটি টাস্ক প্রকল্প

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