2015-08-29 13 views
8

यह गिस्ट दिखाता है कि पूर्व-प्रतिबद्धता पर ग्रहण फ़ॉर्मेटर का उपयोग करके जावा कोड को स्वत: प्रारूपित करना है।गिट प्री-प्रतिबद्ध हुक प्रारूप कोड - इंटेलिज/एंड्रॉइड स्टूडियो

स्रोत: https://gist.github.com/ktoso/708972

कोड:

#!/bin/sh 
# 
# This hook will run the eclipse code formatter before any commit 
# to make the source look as it's supposed to look like in the repo. 

ECLIPSE_HOME=$HOME/eclipse 
STYLE_FILE=$HOME/org.eclipse.jdt.core.prefs 
echo "Running pre-commit hook: run-eclipse-formatter---------------------" 
echo "Will run eclipse formatter, using: $STYLE_FILE" 
echo "Listing folders to run formatter on… " 
code_dirs=`find . -maxdepth 3 | grep 'src/'` 
for dir in $code_dirs; do 
    echo $dir; 
done; 

echo "Launching eclipse code formatter… " 
exec $ECLIPSE_HOME/eclipse \ 
        -nosplash \ 
        -application org.eclipse.jdt.core.JavaCodeFormatter \ 
        -verbose \ 
        -config $STYLE_FILE \ 
        $code_dirs 

echo "done---------------------------------------------------------------" 

मैं IntelliJ और एंड्रॉयड स्टूडियो के साथ इस लक्ष्य को हासिल करना चाहते हैं। तब स्क्रिप्ट कैसा दिखता है?

मुझे लगता है कि बदले गए फ़ाइलों पर केवल फ़ॉर्मेटर चलाने के लिए सबसे अच्छा होगा। शायद यह उपयोगी है:

changedJavaFiles=$(git diff --cached --name-only --diff-filter=ACM | grep '.java$') 

एसीएम जोड़ा गया, कॉपी, संशोधित है। स्रोत: http://git-scm.com/docs/git-diff

अगर कुछ अस्पष्ट है तो कृपया टिप्पणी करें।

अद्यतन

मेरे सेटअप Windows 10 और मैं कमांड लाइन टूल MINGW32 (Git बैश) का उपयोग करना चाहते हैं। गिट संस्करण 1.9.5 msysgit.1

+0

क्या आपको इसका समाधान मिल गया? – Bhargav

+0

नहीं, मैंने नहीं किया लेकिन मुझे अभी भी इस विषय में रूचि है! – BenjaminButton

उत्तर

3

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

यदि आप कमांड लाइन से आईडीईए के सुधार भाग को चलाने के लिए चाहते हैं तो मुझे नहीं लगता कि यह संभव है। एकमात्र ऐसा लगता है जो मैंने पाया है कि बाहर चलाया जा सकता है कोड निरीक्षण।

+0

आपके उत्तर के लिए धन्यवाद। मैंने अपना प्रश्न अपडेट किया। मैं विंडोज़ पर हूं और गिट बैश में संबंधित सब कुछ गिट होता है। मैंने कभी भी एंड्रॉइड स्टूडियो के जीयूआई को प्रतिबद्ध नहीं किया और इसलिए इसे सभी प्रारूपित करने के विकल्प को अपडेट नहीं किया। चूंकि यह विकल्प मौजूद है, मुझे यकीन है कि कमांड लाइन से इसे चलाने का कोई तरीका है। मैं एंड्रॉइड स्टूडियो स्रोत कोड डाउनलोड करूंगा और चारों ओर खोदूँगा। अगर मुझे कुछ उपयोगी लगता है तो मैं एक और टिप्पणी छोड़ दूंगा। एंड्रॉइड स्टूडियो के लिए स्रोत यहां पाया जा सकता है: http://source.android.com/source/downloading.html – BenjaminButton

2

आप संस्करण 2016.3 के बाद से IntelliJ में उपलब्ध IntelliJ command-line source code formatter का उपयोग कर सकते हैं। (Git बैश के लिए) उदाहरण के लिए:

CHANGED_JAVA_SRC_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '.java$') 
$INTELLIJ_DIR/bin/format $CHANGED_JAVA_SRC_FILES 

हालांकि एंड्रॉयड स्टूडियो इंटेलीजे पर आधारित है, यह इस का समर्थन करने के लिए नहीं है जब आईडीई खुला है, नीचे टिप्पणी को देखने लगता है।

git-hooks-code-autoformat project in GitHub में एक और उन्नत प्री-प्रतिबद्ध हुक उदाहरण उपलब्ध है।

+1

यह इसका समर्थन करता है, लेकिन किसी कारण से यह काम नहीं करता है जब आईडीई पहले से ही खुला है – scana

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