سؤال

ما هي أسهل طريقة لتحديد متى تم تعيين الخاصية على ملف أو مجلد ؟ أساسا أنا أبحث عن ما يعادل "إس اللوم" الذي يعمل على خصائص.

سجل 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top