आप हाल ही में SVN लॉग प्रविष्टियाँ कैसे देखते हैं?


194

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

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

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


9
हाँ, यह वास्तव में, उम की तरह काम करना चाहिए git log
पॉल ड्रेपर

जवाबों:


262

limit विकल्प, उदाहरण के लिए:

svn log --limit 4

svn log -l 4

केवल अंतिम 4 प्रविष्टियाँ


127

बर्ट एफ ने जो कहा , उसके अलावा , कई कमांडों सहित 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लिए पुस्तक नियंत्रण में तोड़फोड़ के साथ या संबंधित अध्याय का संदर्भ लें


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

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

41

मुझे -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

2
क्रिया विकल्प बेहद उपयोगी है
जेसन जॉर्ज

और अगर देव-टीम वास्तव में प्यारी है, तो उन्होंने इस मुद्दे को svn टिप्पणी में डाल दिया है और आप आसानी से इस मुद्दे को प्रतिबद्ध से पा सकते हैं।
जोनास सॉडरस्ट्रॉम

11

lessया अन्य पेजर के माध्यम से आउटपुट को पाइप करें :

svn log | less

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

6

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

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

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

svn log -r BASE:HEAD -v


8
या बसsvn log -r BASE:HEAD -v
गैरी

5

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

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

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


4

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

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

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

4

यह उत्तर सबवर्सन सबकोमांड विकल्पों के संबंध में आगे के प्रश्नों पर निर्देशित है। हर उपलब्ध उपकमांड (यानी ऐड, लॉग, स्टेटस ...) के लिए, आप बस --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

3

लेकिन 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.