2010-03-30 8 views
6

के बीच गिट का उपयोग करके मुझे गिट का उपयोग करके नियंत्रित एक परियोजना के भीतर दो टैग्स के बीच एक प्रकार का चेंजलॉग उत्पन्न करना होगा, विशेष रूप से एंड्रॉइड स्रोत कोड। इस सूची में किसी भी फाइल/निर्देशिका/आदि शामिल होना चाहिए जिन्हें संपादित, स्थानांतरित, नामित, हटाया गया, बनाया गया है।बदली गई फ़ाइलों/निर्देशिकाओं/आदि की एक सूची बनाएं। दो टैग

कोई भी मदद महान होगी। और यदि आपके पास पूरे एंड्रॉइड स्रोत पर एक बार में ऐसा करने का कोई तरीका है ... और भी बेहतर।

git log [--pretty=<format>] --name-only tag1..tag2 

या

git diff --name-only tag1 tag2 

(इसके अलावा Gitology recipe में उल्लेख किया है)

लेकिन:

+0

स्पष्ट करने के लिए: मुझे परवाह नहीं है कि केवल फाइलों के भीतर परिवर्तन किए गए थे। हालांकि मुझे यह जानने की ज़रूरत है कि निर्देशिकाओं और सीएम लिंक में क्या बदलाव किया गया था। – dan

+1

क्या http://stackoverflow.com/questions/1038589/how-do-i-find-common-files-changed-between-git-branches मदद करता है? – VonC

+0

एह? आपको फाइलों की आवश्यकता है लेकिन आपको फाइलों की आवश्यकता नहीं है? आपका प्रश्न बहुत स्पष्ट नहीं है ... – drozzy

उत्तर

6

आप को खोजने के लिए जो फ़ाइलों अलग की जरूरत है:

git log --name-only --pretty=format: <tag1>..<tag2> | 
    grep -v '^$' | sort | uniq 
:

git diff --name-only <tag1> <tag2> 

आप सभी बदली हुई फाइलों को खोजने के लिए की जरूरत है

--pretty=format: काम करने के बारे में मुद्रण जानकारी को दबा देना है, और केवल diff भाग मुद्रित करना है। ध्यान दें कि गिट लॉग के मामले में <tag1> और <tag2> मामलों का क्रम दर्ज करें।

+0

यह निश्चित रूप से मदद करता है और मुझे लगता है कि यह अधिकांश भाग के लिए मेरी समस्या हल करता है। प्रश्नों के कुछ अनुवर्ती। 1) क्या केवल एक प्रकार का तत्व दिखाने के लिए इसे सीमित करने का कोई तरीका है (यानी केवल निर्देशिकाएं) या तत्व प्रकार के कम से कम लेबल पर। 2) आप उल्लेख करते हैं कि टैग ऑर्डर मायने रखता है, क्या आप मुझे एक डॉक्टर को इंगित कर सकते हैं जो बताता है कि ऑर्डरिंग कैसे फर्क पड़ता है ताकि मैं अपना सही ऑर्डर निर्धारित कर सकूं। (मैं अपने आप को भी इस पर शोध करना जारी रखूंगा और अगर मैं स्वतंत्र रूप से खोज रहा हूं तो मुझे वापस पोस्ट करें) – dan

+0

उपर्युक्त उदाहरण को पढ़ने के लिए संपादित करें (यानी सिम्लिंक) नीचे दी गई टिप्पणी को पढ़ने के रूप में मुझे लगता है कि मैं देखूंगा बदली गई निर्देशिकाओं को खोजने के लिए एक अलग आदेश की आवश्यकता है – dan

+0

@dan: re 2.) "गिट लॉग .. " के मामले में यह बाद में टैग 2 से टैग 1 तक इतिहास दिखाता है, यानी टैग 1 टैग 2 से पहले होना चाहिए। खैर, आप हमेशा सममित ' ... ' का उपयोग कर सकते हैं जो सामान्य पूर्वजों से परिवर्तन दिखाता है ... –

1

मैं टिप्पणी में उल्लेख के रूप में, "How do I find common files changed between git branches?" यहाँ मुख्य समाधान है के रूप में How to get a list of directories deleted in my git repository? में "का उल्लेख किया ", गिट केवल फाइलों की सामग्री को ट्रैक करता है, न कि निर्देशिकाएं

निर्देशिकाओं के बारे में जानकारी शामिल करने के लिए, आपको git diff-tree के साथ खेलना शुरू करना होगा।

किसी भी निर्देशिका है कि बनाया है या हटा दिया क्रमश: दूसरे या पहले कॉलम में 040000 और पहली या दूसरी कॉलम में 000000 होगा किया गया है। बाएं और दाएं प्रविष्टियों के लिए यह वृक्ष प्रविष्टि 'मोड' हैं।

(Charles Bailey के अनुसार) की तरह कुछ:

git diff-tree -t origin/master master | grep 040000 | grep -v -E '^:040000 040000' 
+0

उत्तर के लिए धन्यवाद और आगे की जानकारी के लिए लिंक मैं उन पर नजर रखूंगा और देख सकता हूं कि वे मेरी अनूठी स्थिति के लिए काम करते हैं या नहीं। – dan

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