আমি জানি যে আমি svn diff -r a:b repo
দুটি নির্দিষ্ট সংশোধনগুলির মধ্যে পরিবর্তনগুলি দেখতে পারি । আমি যা চাই তা প্রতিটি পরিবর্তনের জন্য একটি ফাইল যা পরিবর্তিত হয়েছে is এই জাতীয় আদেশ পাওয়া যায়?
আমি জানি যে আমি svn diff -r a:b repo
দুটি নির্দিষ্ট সংশোধনগুলির মধ্যে পরিবর্তনগুলি দেখতে পারি । আমি যা চাই তা প্রতিটি পরিবর্তনের জন্য একটি ফাইল যা পরিবর্তিত হয়েছে is এই জাতীয় আদেশ পাওয়া যায়?
উত্তর:
এটির জন্য কোনও অন্তর্নির্মিত কমান্ড নেই, তাই আমি সাধারণত এই জাতীয় কিছু করি:
#!/bin/bash
# history_of_file
#
# Outputs the full history of a given file as a sequence of
# logentry/diff pairs. The first revision of the file is emitted as
# full text since there's not previous version to compare it to.
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -n | {
# first revision as full text
echo
read r
svn log -r$r $url@HEAD
svn cat -r$r $url@HEAD
echo
# remaining revisions as differences to previous revision
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
তারপরে, আপনি এটি দিয়ে কল করতে পারেন:
history_of_file $1
svn: '.' is not a working copy svn: Syntax error in revision argument '@HEAD' svn: Syntax error in revision argument '@HEAD'
svn log --diff [path_to_file]
ঠিক এইভাবে কাজ করে! stackoverflow.com/a/24938573/3185510
আপনি যা বর্ণনা করেছেন তার থেকে কিছুটা পৃথক, তবে আমি মনে করি এটি সম্ভবত আপনার যা প্রয়োজন তা হতে পারে:
svn blame filename
এটি প্রতিবেদনের সময় এবং লেখক দ্বারা উপস্থাপিত প্রতিটি লাইনের সাথে ফাইলটি মুদ্রণ করবে যা সর্বশেষে এটি পরিবর্তন করেছে।
আপনি যদি কোড পরিবর্তন সহ কোনও ফাইলের পুরো ইতিহাসটি দেখতে চান:
svn log --diff [path_to_file] > log.txt
--diff
কারণ এটির বিকল্পগুলির জন্য পরীক্ষা রয়েছে যেখানে 1.7.3 এর কোনওটি নেই - subversion/tests/cmdline/log_tests.py
।
--limit <number>
বিকল্প সহ with ভালো লেগেছে:svn log --diff --limit 5 [path_to_file]
আপনি git-svn
গিট সংগ্রহস্থলটিতে সংগ্রহস্থলটি আমদানি করতে ব্যবহার করতে পারেন , তারপরে ব্যবহার করুন git log -p filename
। এটি ফাইলের জন্য প্রতিটি লগ এন্ট্রি দেখায় যার পরে এটি সম্পর্কিত ডিফ হয়।
git log X..Y -o filename
শুরু করা
svn log -q file | grep '^r' | cut -f1 -d' '
এটি আপনাকে পুনর্বিবেচনার একটি তালিকা পাবে যেখানে ফাইলটি পরিবর্তন হয়েছে, যা আপনি বার বার কল করতে স্ক্রিপ্টে ব্যবহার করতে পারেন svn diff
।
svn log -q some_file.xxx | grep ^r | awk '{print $1}' | sed -e 's/^r//' | xargs -i svn diff -rHEAD:{} some_file.xxx > ~/file_history.txt
সুন্দর ছোট ওয়ান-লাইনার (awk কাট হিসাবে একই কাজ করে)
অদ্ভুতভাবে নাম করা "দোষ" কমান্ড এটি করে। আপনি যদি কচ্ছপ ব্যবহার করেন তবে এটি আপনাকে "রিভিশন থেকে" ডায়ালগ দেয়, তারপরে একটি সংশোধন নম্বর এবং তার পাশের লেখকের লাইনের সূচক দ্বারা একটি লাইনের সাথে একটি ফাইল তালিকাবদ্ধ করে।
আপনি যদি পুনর্বিবেচনা তথ্যটিতে ডান ক্লিক করেন তবে আপনি একটি "লগ দেখান" ডায়ালগ আনতে পারেন যা চেকইনের অংশ ছিল এমন অন্যান্য ফাইলগুলির সাথে পুরো চেকইন তথ্য দেয়।
যতদূর আমি জানি যে এটি সম্পাদন করার জন্য এসএনএন কমান্ডে কোনও বিল্ট নেই। সমস্ত ভিন্নতা তৈরি করতে আপনাকে বিভিন্ন কমান্ড চালাতে একটি স্ক্রিপ্ট লিখতে হবে। একটি সহজ পদ্ধতির হ'ল যদি কোনও বিকল্প হয় তবে জিইউআই এসএনএন ক্লায়েন্ট ব্যবহার করা। তাদের মধ্যে অনেকগুলি যেমন- Eclipse এর জন্য সাবস্ট্রিভ প্লাগইন কোনও ফাইলের ইতিহাসের তালিকা তৈরি করার পাশাপাশি আপনাকে প্রতিটি পুনর্বিবেচনার ভিন্নতা দেখতে দেয়।
ধন্যবাদ, বেনডিন আমি আপনার সমাধান খুব পছন্দ করি।
আমি প্রথমে সাম্প্রতিক পরিবর্তনগুলি দেখিয়ে বিপরীত ক্রমে কাজ করে এটি পরিবর্তন করেছি। দীর্ঘস্থায়ী কোড সহ যা বেশ কয়েক বছর ধরে বজায় রাখা গুরুত্বপূর্ণ। আমি সাধারণত এটি আরও পাইপ।
svnhistory elements.py |more
আমি সাজানো -r যোগ। আমি কল্পনা সরিয়েছি। 'প্রথম রেকর্ড' জন্য পরিচালনা। এটি হ'ল এটি সর্বশেষ এন্ট্রিতে ত্রুটিযুক্ত হবে কারণ এর সাথে আলাদা করার মতো কিছুই নেই। যদিও আমি এর সাথেই থাকি কারণ আমি কখনই এখান থেকে নামি না।
#!/bin/bash
# history_of_file
#
# Bendin on Stack Overflow: http://stackoverflow.com/questions/282802
# Outputs the full history of a given file as a sequence of
# logentry/diff pairs. The first revision of the file is emitted as
# full text since there's not previous version to compare it to.
#
# Dlink
# Made to work in reverse order
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -nr | {
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
history_of_file $1
আমি এই বিষয়টি গবেষণা করার সময় বেশ কয়েকটি আংশিক উত্তর দেখেছি seen এটিই আমার পক্ষে কাজ করেছে এবং আশা করি এটি অন্যকে সহায়তা করে। এই কমান্ডটি কমান্ড লাইনে আউটপুট প্রদর্শন করবে, যা সংশোধন নম্বর, লেখক, পুনর্বিবেচনার টাইমস্ট্যাম্প এবং করা পরিবর্তনগুলি দেখায়:
svn blame -v <filename>
আপনার অনুসন্ধানকে আরও সহজ করার জন্য, আপনি কোনও ফাইলে আউটপুট লিখতে পারেন এবং আপনি যা খুঁজছেন তা গ্রেপ করতে পারেন।