كيف تحصل على تاريخ ملف/مجلد الملكية في إس?
-
22-07-2019 - |
سؤال
ما هي أسهل طريقة لتحديد متى تم تعيين الخاصية على ملف أو مجلد ؟ أساسا أنا أبحث عن ما يعادل "إس اللوم" الذي يعمل على خصائص.
سجل subcommand تمكن أحد من الحصول على تاريخ كامل من ملف أو مجلد ، بما في ذلك عندما خصائص تم تعديلها.بيد أنه لا يميز بين خاصية التعديل و أنواع أخرى من التعديل ، والتي بالطبع يعني أيضا أنه لن أقول لك أي شيء عن تاريخ خاصية معينة.
وضع الأوامر يميز بين خصائص و أنواع أخرى من التعديلات ، ولكن يعمل فقط على نسخة العمل.
تلوم نفسها فقط يدعم الملفات وليس الدلائل ، ويعمل على المحتوى ، وليس خصائص.
أفكار ؟
المحلول
وأفضل ما يمكن أن أفكر في أن أكتب قليلا النصي أو التطبيق الذي يستخدم الأمر إس propget تفريغ قيمة العقار الحالية إلى ملف نصي، ثم يمشي إلى الوراء من خلال المراجعات إلقاء الخاصية إلى ملف نص آخر ومقارنتها الاثنان. بمجرد أن يكتشف تغيير، فإنه يطبع خارج رقم المراجعة (في الواقع في وقت لاحق رقم المراجعة التي جعلت التغيير) جنبا إلى جنب مع المستخدم الذي ارتكبت فيه.
وهنا أمر سبيل المثال تفريغ إس: تجاهل الملكية للدليل القاموس في المراجعة (80):
svn propget -r 80 svn:ignore dictionary
نصائح أخرى
طريقة واحدة للحصول على قائمة من عند خصائص مجلد معين تغير هو:
svn log -v . |grep " M /trunk/datacenter$" -B2
الذي يعطي الإخراج التالي:
r963 | someuser | 2013-08-26 20:32:37 +0200 (Mon, 26 Aug 2013) | 4 lines
Changed paths:
M /trunk/datacenter
--
r908 | someotheruser | 2013-08-15 12:15:03 +0200 (Thu, 15 Aug 2013) | 1 line
Changed paths:
M /trunk/datacenter
--
r413 | someuser | 2013-04-26 09:02:08 +0200 (Fri, 26 Apr 2013) | 1 line
Changed paths:
M /trunk/datacenter
ثم يمكنك أن تبحث في كل مراجعة أن نرى ما الذي تغير:
$ svn diff -c963
في الأسفل:
...
Property changes on: .
___________________________________________________________________
Modified: svn:ignore
## -22,3 +22,5 ##
.idea
.classpath
+
+dev-config.groovy
سلبيات:
- لا توجد طريقة لتحديد الممتلكات التي كنت مهتما في
- مملة
ملاحظة:غير متأكد -B2 كافية في جميع الحالات باعتبارها خط "م /شنطة/مراكز البيانات" قد لا يكون السطر الأول
#!/bin/bash
# This is not a great solution, but it works for gathering the data
CURRENT_REVISION=95300
OLDEST_REVISION=93000
URL="file:///home/svn/repo/project/dir/target.c"
PROPERTY_NAME="svn:externals"
for i in `seq $OLDEST_REVISION $CURRENT_REVISION`
do
svn -r$i propget "$PROPERTY_NAME" "$URL" | sed -e "s/^/$i\t/"
done
إس-ملحقات الأدوات لديها الآن svn-prop-annotate
و(كما تخصص) أوامر svn-mergeinfo-annotate
. وأداء ضعيف (لأن تشغيلها svn log
وsvn diff
لكل تغيير محتمل)، وربما لا تزال لديها بعض التبعيات وperculiarities إلى بلدي معين أسلوب العمل، ولكن في محاولة منهم إذا كنت يائسة بما يكفي.
إليك بعض إخراج نموذج:
$ svn-mergeinfo-annotate --author karkat -l 5
67645 ingo.karka Merged /branches/1.50/foobar:r67488
67423 ingo.karka Merged /branches/1.50/foobar:r67315,67331
67339 ingo.karka Merged /branches/1.50/foobar:r67279
53320 ingo.karka Merged /branches/foo-1.01:r53317