এমন কোনও সংস্করণ নিয়ন্ত্রণ ব্যবস্থা আছে যা কোনও নির্দিষ্ট পদ্ধতি বা ফাংশনে পরিবর্তন দেখাতে পারে? [বন্ধ]


11

কখনও কখনও এটির মতো কিছু বলতে পেরে ভালো লাগবে:

(git|svn|hg|etc) diff Foo.c:main
(git|svn|hg|etc) log log Foo.c:main

শেষ প্রতিশ্রুতি থেকে কোনও উত্স ফাইলের মধ্যে একটি নির্দিষ্ট ফাংশনে পরিবর্তনগুলি দেখা যায়, বা পরিবর্তনের সম্পূর্ণ ইতিহাস। আমার প্রশ্ন দ্বিগুণ:

  1. কিছু আছে যে এটি করে?
  2. এই জাতীয় সরঞ্জাম ব্যবহারিক হবে? ফাংশনের বিভিন্ন সংস্করণের তুলনা করার জন্য প্রতিটি সংশোধনীতে কোডের কিছু সাধারণ পার্সিং করতে হবে; এটি দক্ষ হওয়ার জন্য ওভারহেড কি খুব বেশি হবে?

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

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

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

উত্তর:


14
  1. আমি যতদূর জানি, এটি হয় না। এক হতে পারে, তবে আমি এটির উত্পাদন মানের হবে এমনটা আশা করবো না যদি তা হয়।
  2. আমি এটি ব্যবহারিক বলে মনে করি না, তবে আপনি তালিকাভুক্ত কারণে নয়। এটি ব্যবহারিক নয় কারণ ভিসিএসকে সেই ধরণের কার্যকারিতা সমর্থন করার জন্য ভাষা সচেতন হতে হবে। মূলত, আপনার ভাষার পাঠ্যকে বিশ্লেষণ করতে কিছু এম্বেড করা প্রয়োজন (সংকলক যে বড় পদক্ষেপটি দেয় সেগুলির মধ্যে একটি)। এটি আপনার ভিসিএসে অতিরিক্ত অতিরিক্ত ওজন যুক্ত করে যা ইতিমধ্যে বেশ জটিল কাজ করে চলেছে।
    তবে আরও গুরুত্বপূর্ণ, আপনি যে ভাষা সমর্থন করতে চান তার জন্য আপনার একই কাজ করা দরকার। যে ভিসিএস কেবল বিক্রয়কারী পয়েন্ট কেবল সি কোডে কাজ করে সেগুলি অনেকগুলি ট্র্যাকশন পাচ্ছে না। এমনকি যদি আপনি সমস্ত অস্পষ্ট ভাষা উপেক্ষা করেন তবে এটি শীর্ষ 10 টি ভাষাও সমর্থন করার পক্ষে একটি বিশাল উদ্যোগ হবে।

এবং রবার্ট যেমন উল্লেখ করেছেন, তাত্ক্ষণিকভাবে কোনও পদ্ধতিতে ঝাঁপিয়ে পড়তে সক্ষম হওয়া ডিফ ডিভাইসের মধ্যে পদ্ধতিতে নিজে হাতে ঝাঁপিয়ে পড়ার চেয়ে বড় লাভ নয়।


4
ভাষা নির্ভরতা এবং প্রচুর অতিরিক্ত কাজ করার কোডের পরে আমি দ্বিতীয় স্থানে
রয়েছি

1
কোড হাইলাইটিং সম্পাদকদের বিরুদ্ধে একই যুক্তি তৈরি করা যেতে পারে যদিও; সেগুলি অবশ্যই ভাষা-সচেতন হতে হবে এবং প্রকৃতপক্ষে উপস্থিত রয়েছে। হতে পারে পেওফটি যদিও কিছুটা বেশি (কোডজ রঙিন পর্দা!)। আমি সম্মতি জানাই পার্সিং সম্ভবত সবচেয়ে কঠিন অংশ হবে। সর্বাধিক সাধারণ ভাষাগুলি সমর্থন করা এত কঠিন হবে না, বিশেষত যেহেতু আপনাকে প্রোগ্রামটি পুরোপুরি বিশ্লেষণের দরকার নেই need
jches

8

এসএনএন আসলে আপনি যা চান তার কাছাকাছি কিছু করে।

আপনি কমান্ডটি ব্যবহার করতে পারেন:

svn diff -x -p program.c 

-x -p পরিবর্তন সেট উপরে উপলব্ধ 'সি' ফাংশন নাম। যা দেখে মনে হচ্ছে।

@@ -97,6 +102,8 @@ int function1(int *x)

এটি ফিল্টার করে না তবে আপনি আপনার উদ্দেশ্যটি নিবিড়ভাবে পরিবেশন করতে গ্রেপ / অনুসন্ধান করতে পারেন।

আমার ধারণা এটি কেবল 'সি' (বা সি / সি ++) এর জন্য। তবে আমার ধারণা, যদি চাহিদা থাকে তবে এসএনএন এটি অন্য ভাষার জন্যও উপলব্ধ করে তুলবে।

আমি বেশ যুক্তি সদস্যতা নিতে VCS উচিত যে কি না তা করতে। সর্বোপরি আমরা সমস্ত আইডিই বা সম্পাদকদের (ভিআইএম, ইএমএসিএসের মতো) প্রতিটি ভাষার জন্য নির্দিষ্ট যা সিনট্যাক্স হাইলাইটিং করতে চাই এবং একই সাথে অনেককে সমর্থন করি। সুতরাং, ভিসিএস একটি বিকাশকারী সরঞ্জাম হওয়ায় এ জাতীয় কার্যকারিতাও সমর্থন করা উচিত।

অবশ্যই, আপনার প্রশ্নের জন্য ধন্যবাদ যে আমি এটি আবিষ্কার করেছি। আমি এর আগে কখনও ব্যবহার করিনি।


1

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



-1

কোন ফাইলের প্রতিটি লাইনটি শেষবার সংশোধন এবং লেখক পরিবর্তন করেছেন তা দেখানোর জন্য:

git blame filename

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

সংস্করণ নিয়ন্ত্রণ সিনট্যাক্সের বিশদ সম্পর্কে জানে না এবং ফাইলগুলির ধরণের যত্ন করে না।
গীতা

-1

ENর্ষা এবং স্টোর উভয়ই তা করে। এটি আকর্ষণীয় যে, উপরে উল্লিখিত মোনসেলোর মতো লোগান ক্যাপাল্ডোও এগুলি ছোট্ট টালকের জন্য।

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