2012-04-23 9 views
6

मुझे अपनी शाखाओं की टोपोलॉजी देखने में दिलचस्पी है, आदर्श रूप से एक सुंदर तरीके (एक ला ग्राफॉग) में। उदाहरण के लिए, मैं देखना चाहता हूं कि कितनी (खुली) शाखाएं विभाजित होती हैं, आखिरी बार जब वे एक-दूसरे से विलय हो जाते हैं, आदि। मुझे में सभी में दिलचस्पी नहीं है, न ही उनके बीच विलय प्रत्येक शाखासीधी रेखा के विकास के साथ व्यापारिक इतिहास देखें

उदाहरण के लिए बिटबकेट पर कांटे को देखते समय यह उपयोगी होता है। गिथब का नेटवर्क ग्राफ मदद करता है, लेकिन अक्सर शाखा संरचना को सीधे विकास और/या लगातार विलय से बाहर निकाला जाता है।

मैंने सोचा कि शायद मैं

hg glog --rev "head() or merge() or branch_points()" 

तरह revsets इस्तेमाल कर सकते हैं, लेकिन फिर glog, के बीच इस तथ्य का उल्लेख नहीं करने के लिए सभी संशोधन से पता चलता है कि मैं समझ नहीं सकता है (branch_points निर्दिष्ट करने का तरीका) यानी संशोधन जो एक से अधिक बच्चे हैं

क्या Mercurial (या एक और डीवीसीएस) के लिए कोई विस्तार है जो मेरी इच्छाओं का अनुमान लगा सकता है? यदि नहीं है तो यह जानकारी प्राप्त करने का एक बेहतर तरीका है?

उत्तर

2

निम्नलिखित पैच शाखा बिंदु को Mercurial में पुन: सेट करता है। यह वर्तमान में केवल Mercurial 2.2 पर लागू होता है, लेकिन वहां यह अच्छी तरह से काम करता है।

मुझे नहीं पता कि मेरे पास समावेशन के लिए जल्दी से धक्का देने का समय होगा या नहीं। आप मेलिंग सूची में जा सकते हैं और इसे शामिल करने के लिए तैयार होने की पेशकश कर सकते हैं (जो मुझे वह काम बचाएगा)।

संशोधन https://bitbucket.org/ArneBab/hg-stable

# HG changeset patch 
# User [email protected] 
# Date 1343931127 -7200 
# Branch stable 
# Node ID f5e211663739e31f2e476c43992ee5335f9d8146 
# Parent 00182b3d087909e3c3ae44761efecdde8f319ef3 
revsets: added branchpoint() for revisions with more than one child. 

Reason: Get very terse information via 

    hg glog --rev "head() or merge() or branchpoint()" 

diff -r 00182b3d0879 -r f5e211663739 mercurial/revset.py 
--- a/mercurial/revset.py  Tue May 01 19:09:15 2012 +0900 
+++ b/mercurial/revset.py  Thu Aug 02 20:12:07 2012 +0200 
@@ -710,6 +710,15 @@ 
    cl = repo.changelog 
    return [r for r in subset if cl.parentrevs(r)[1] != -1] 

+def branchpoint(repo, subset, x): 
+ """``branchpoint()`` 
+ Changeset has more than one child. 
+ """ 
+ # i18n: "merge" is a keyword 
+ getargs(x, 0, 0, _("branchpoint takes no arguments")) 
+ cl = repo.changelog 
+ return [r for r in subset if cl.children(repo[r].node())[1:]] 
+ 
def minrev(repo, subset, x): 
    """``min(set)`` 
    Changeset with lowest revision number in set. 
@@ -1137,6 +1146,7 @@ 
    "bisected": bisected, 
    "bookmark": bookmark, 
    "branch": branch, 
+ "branchpoint": branchpoint, 
    "children": children, 
    "closed": closed, 
    "contains": contains, 
+0

ठीक है में भी है, मैं अंत में यह देखा। ऐसा लगता है कि यह मर्ज() से बहुत धीमा लगता है, लेकिन ऐसा लगता है कि यह काम करता है। मुझे Mercurial विकास के बारे में बहुत कुछ नहीं पता, लेकिन मैं देखता हूँ कि मैं जल्द ही मेलिंग सूची पर जा सकता हूं। जो कुछ जरूरी है वह सही है? –

+1

मैंने सूची में एक पैच भेजा, लेकिन मैंने इसे अभी तक अभिलेखागार में दिखाई नहीं दिया है। –

+0

क्या यह अब अभिलेखागार में आया है? यदि नहीं, तो आप इसे मुझे भेज सकते हैं और मैं इसे डेवेल-सूची में भेज दूंगा। arne_bab -ät- web -dot- de –

2
 
    $ hg log -Gr "merge() + head()" 
+0

असल में, Mercurial 2.4 में अब 'शाखा बिंदु() 'है ताकि इसे जोड़ा जा सके। –

+0

मैं ** एचजी लॉग-जीआर "शाखा बिंदु()" ** ** कोशिश करता हूं लेकिन यह * एचजी: पार्स त्रुटि के साथ विफल रहता है: कोई फ़ंक्शन नहीं: शाखा बिंदु * इसका मतलब क्या है? – gavenkoa

+1

हां, मेरा मतलब था (अच्छी तरह से आप 'एचजी लॉग-जीआर "मर्ज() + हेड() + शाखापॉइंट()" 'चाहते हैं। आपको 2.4 के बाद से एक नए संस्करण में अपग्रेड करना पड़ सकता है [नवंबर 2012 में बाहर आया] (http://mercurial.selenic.com/wiki/WhatsNew#Mercurial_2.4_.282012-11-1.29) –

संबंधित मुद्दे