2011-02-02 9 views
168

टाइपिंग svn log एक कमांड लाइन पर एक अविश्वसनीय रूप से लंबी, बेकार सूची बाहर थूकता है। मुझे नहीं पता कि यह डिफ़ॉल्ट क्यों है। अगर मैं टर्मिनल पर 300 प्रविष्टियों को पढ़ना (या यहां तक ​​कि पढ़ सकता था) पढ़ना चाहता था, तो मुझे टाइपिंग svn log --full या कुछ समान टाइप करना पड़ेगा।आप हाल ही में एसवीएन लॉग प्रविष्टियों को कैसे देखते हैं?

शायद एसवीएन लोग सोच रहे हैं कि मैं उस आउटपुट को किसी अन्य कार्यक्रम में फ़ीड करना चाहता हूं। हालांकि, अगर ऐसा है, तो प्रोग्राम के लिए अधिक वर्बोज़ कॉल करने के लिए यह अधिक समझदारी होगी - टर्मिनल उपयोगकर्ता नहीं।

वैसे भी, मैं पिछले 5 या 10 प्रविष्टियों की तरह हाल ही की गतिविधि को कैसे देख सकता हूं यह देखने के लिए कि क्या बदल गया?

+7

हाँ, यह वास्तव में की तरह, उम, 'Git log' काम करना चाहिए। –

उत्तर

227

limit विकल्प, जैसे:

svn log --limit 4 

svn log -l 4 

केवल पिछले 4 प्रविष्टियों

10

पाइप less या अन्य पेजर के माध्यम से उत्पादन:

svn log | less 
+1

यदि आपके पास> 23k संशोधन हैं, तो आप पहले प्रविष्टियों को देखने के लिए ~ 20 सेकंड प्रतीक्षा करेंगे (और जब वर्बोज़ लॉग का उपयोग नहीं करते हैं)। लेकिन यह अच्छा है - सबसे हाल ही में शीर्ष पर दिखाता है। और TortoiseSVN की 100-एक-बार-समय पेजिंग से बेहतर! जब आप आगे जाना चाहते हैं। –

121

क्या Bert F said, कई आदेशों इसके अलावा, log सहित -r (या --revision) विकल्प है।

svn log -r 1:HEAD 

अवरोही क्रम में सब कुछ को सूचीबद्ध करने के:

svn log -r HEAD:1 

सब कुछ को सूचीबद्ध करने के

आरोही क्रम में सब कुछ को सूचीबद्ध करने के: निम्नलिखित इस विकल्प का उपयोग संशोधन की सीमाओं को दिखाने के लिए कुछ व्यावहारिक उदाहरण हैं तेरहवें से वर्तमान में चेक-आउट संशोधन के आधार पर आरोही क्रम में:

svn log -r 13:BASE 

दिया तिथियों के बीच सब कुछ पाने के लिए:

svn log -r {2011-02-02}:{2011-02-03} 

आपको लगता है कि आप क्या छपा है पर एक काफी विस्तृत नियंत्रण कर सकते हैं ताकि, --limit विकल्प के साथ सब से ऊपर भाव जोड़ सकते हैं। इन -r भाव के बारे में अधिक जानकारी के लिए svn help log को देखें या पुस्तक Version Control with Subversion

+8

उस स्पष्टीकरण के लिए बहुत धन्यवाद, @ डैनियल डिन्नीस - मुझे अक्सर ओपी से विपरीत समस्या होती है: 'svn log।' केवल मेरे लिए सबसे पुराना संशोधन लौटा सकता है (इसी प्रकार 'svn log --limit 4 .') के साथ; लेकिन अगर मैं 'svn log -r HEAD: 1 .' कहता हूं, तो आखिरकार मुझे सूचीबद्ध सभी प्रविष्टियां मिलती हैं ... धन्यवाद फिर से - चीयर्स! – sdaau

+0

यह बेहतर है, क्योंकि 'svn log' केवल वर्तमान पथ का परिवर्तन इतिहास दिखाता है। – Ninja

37

में प्रासंगिक अध्याय मैं वर्बोज़ मोड के लिए -v का उपयोग करना चाहते।
यह आपको प्रतिबद्ध आईडी, टिप्पणियां और सभी प्रभावित फाइलें देगा। उत्पादन का

svn log -v --limit 4 

उदाहरण:

I added some migrations and deleted a test xml file 
------------------------------------------------------------------------ 
r58687 | mr_x | 2012-04-02 15:31:31 +0200 (Mon, 02 Apr 2012) | 1 line Changed 
paths: 
A /trunk/java/App/src/database/support  
A /trunk/java/App/src/database/support/MIGRATE  
A /trunk/java/App/src/database/support/MIGRATE/remove_device.sql 
D /trunk/java/App/src/code/test.xml 
+1

वर्बोज़ विकल्प बेहद उपयोगी –

+0

है और यदि देव-टीम वास्तव में मीठा है तो उन्होंने समस्या आईडी को svn टिप्पणी में रखा है और आप आसानी से प्रतिबद्धता से जुड़े मुद्दे को ढूंढ सकते हैं। –

4

क्या अन्य लोगों ने कहा करने के लिए जोड़ने के लिए, आप भी एक उपनाम अपने .bashrc या .bash_aliases फ़ाइल में बना सकते हैं:

alias svnlog='svn log -l 30 | less' 

या जो भी आप अपने डिफ़ॉल्ट के रूप चाहते

2

लेकिन SVN लॉग उलटे क्रम में अब भी है, अर्थातसबसे हालिया प्रविष्टियां पहले आउटपुट हैं, मेरे टर्मिनल के शीर्ष पर स्क्रॉलिंग और चली गईं। मैं वास्तव में को अंतिम प्रविष्टियों को देखना चाहता हूं, यानी सॉर्टिंग ऑर्डर क्रोनोलॉजिकल होना चाहिए। यह एकमात्र कमांड है जो ऐसा लगता है svn log -r 1:HEAD लेकिन कुछ 10000 प्रविष्टियों के साथ एक भंडार पर बहुत अधिक समय लगता है। मैं आए हैं यह इस:

प्रदर्शन कालानुक्रमिक क्रम में पिछले 10 तोड़फोड़ प्रविष्टियों:

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD 
2

मामले किसी को भी इस वर्ष प्रश्न में दिख रही है, आपके अंतिम अपडेट के बाद से परिवर्तन देखने के लिए एक आसान आदेश :

svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v

ले
एक ही बात है, लेकिन बहुत कम और अधिक तार्किक (धन्यवाद टिप्पणी के लिए गैरी):

svn log -r BASE:HEAD -v

+7

या सिर्फ 'SVN लॉग -r आधार: सिर -v' – Gary

3

आप पहले से ही देखा है के रूप में svn log आदेश किसी भी तर्क के बिना भाग गया सभी लॉग संदेश जो आपके द्वारा निर्दिष्ट URL करने के लिए या काम कर रहे प्रतिलिपि फ़ोल्डर जहाँ आप आदेश को चलाने के लिए संबंधित को दर्शाता है।

तुम हमेशा परिष्कृत कर सकते हैं/svn log परिणामों को सीमित:

  • svn log --limit NUM संशोधन का केवल पहला NUM दिखाएगा
  • svn log --revision REV1(:REV2) Rev1 संशोधन के लिए या Rev1 के लिए लॉग संदेश दिखाई देगा, -, Rev2 रेंज
  • svn log --search आपके द्वारा निर्दिष्ट खोज पैटर्न से मेल खाने वाले संशोधन दिखाएगा (आदेश सबवर्सन 1.8 और नए क्लाइंट में उपलब्ध है)। तुम्हें पता है,
    • संशोधन के लेखक (अर्थात कमिटर उपयोगकर्ता नाम) से खोज सकते हैं
    • तारीख जब संशोधन हामी भर दी थी,
    • संशोधन टिप्पणी पाठ (लॉग संदेश),
    • पथों की सूची संशोधन में बदल दिया है।
2

इस उत्तर सबवर्सन subcommands विकल्पों के बारे में आगे के प्रश्न में निर्देशित है। प्रत्येक उपलब्ध उपसमंद (यानी, लॉग, स्थिति ...) के लिए, आप केवल --help विकल्प को उपलब्ध विकल्पों की पूरी सूची प्रदर्शित करने के लिए जोड़ सकते हैं, जिनका उपयोग आप अपने उप-आदेश के साथ कर सकते हैं और साथ ही साथ उनका उपयोग कैसे करें। निम्नलिखित स्निपेट "उदाहरण" के तहत svn log --help आदेश उत्पादन से सीधे लिया जाता है:

Show the latest 5 log messages for the current working copy 
directory and display paths changed in each commit: 
    svn log -l 5 -v 
संबंधित मुद्दे