2010-05-07 11 views
19

मैंने अपने भंडार में एक svn:external बनाया है। svn status कमांड के आउटपुट को छोड़कर सब कुछ ठीक काम करता है।svn नहीं दिखाएं: svn स्थिति में बाहरी

$ svn st 
X  lib 

Performing status on external item at 'lib' 

मैं svn st --ignore-externals -q चला सकते हैं और मैं एक छोटे से स्क्रिप्ट में इस लाइन जगह कर सकते हैं, लेकिन शायद वहाँ बेहतर समाधान है: उत्पादन में जानकारी के बहुत मैं की जरूरत नहीं है नहीं है। बाहरी लोगों के बारे में जानकारी देखे बिना मैं अपनी कार्यशील प्रति की स्थिति कैसे देख सकता हूं?

+1

+1 मैं एक ही समस्या है, मैं नहीं बल्कि --ignore-बाहरी होने के लिए पसंद आया है | डिफ़ॉल्ट बनने के लिए डिफ़ॉल्ट या विन्यास योग्य। –

+2

बस स्पष्ट होने के लिए: -q (शांत मोड) लाइन "एक्स lib" और --ignore-externals पंक्ति को हटा देता है "lib 'पर बाहरी आइटम पर प्रदर्शन स्थिति" को हटा देता है। इस पर आधारित उत्तर को अपडेट करने के लिए सर्वश्रेष्ठ। –

+2

इसके लायक होने के लिए, http://subversion.tigris.org/issues/show_bug.cgi?id=1935 की लंबी चर्चा है, जिसे मैंने अभी तक पढ़ना समाप्त नहीं किया है। अब तक, यह तय करने पर उचित सहमति की तरह दिखता है कि यह 2004 में स्थापित किया गया था .../-: – tripleee

उत्तर

4

यह आपके svn status आउटपुट में प्रकट होने के लिए बाह्य को अनदेखा करने का उचित तरीका प्रतीत होता है।

संदर्भ:

http://svnbook.red-bean.com/en/1.4/svn.ref.svn.html

+3

यह प्राचीन इतिहास है जो मुझे पता है, लेकिन इस उत्तर में वास्तविक उत्तर शामिल करने की आवश्यकता है: लिंक तोड़ सकते हैं। – GreenAsJade

+0

'svn स्थिति --ignore-externals' – tuxayo

0

खोज एक clever Bash script कार्यान्वयन है कि एक स्क्रिप्ट के साथ svn आदेश को ओवरराइड करता है ऊपर बदल जाता है। हालांकि, मैं विंडोज़ में कुछ ऐसा करना चाहता था। अपने PATH से svn निर्देशिका निकालें, फिर svn.bat नाम के एक बैच स्क्रिप्ट बना सकते हैं और कहीं रख दिया अपने PATH (C:\Windows की तरह):

@echo off 
setlocal 

if (%1)==(st) goto :match 
if (%1)==(stat) goto :match 
if (%1)==(status) goto :match 

:: If not running Status command, just pass the args along 
"C:\Program Files\SlikSvn\bin\svn" %* 
goto :eof 

:match 

:: Init variables 
set svnargs1= 
set svnargs2=--ignore-externals 

:: Loop through arguments 
:loop 
if "%~1"=="" goto :cont 

:: Look for ignore externals flag 
if "%~1"=="--examine-externals" (
    set svnargs2= 
) else (
    if "%~1"=="-h" (
     set svnargs2= 
    ) 

    set svnargs1=%svnargs1% %1% 
) 


shift & goto :loop 
:cont 

:: Call svn 
"C:\Program Files\SlikSvn\bin\svn" %svnargs1% %svnargs2% 
0

मुझे लगता है कि अभी तक कोई जवाब नहीं वास्तव में अर्थ में समस्या का हल है कि में परिवर्तन करता है, तो svn का एक हिस्सा: बाहरी बना दिया गया है, वे निश्चित रूप से प्रदर्शित किया जाना चाहिए। यह वास्तव में बाहरी भंडारों के लिए कोई मतलब नहीं है। लेकिन मैं svn: externals का उपयोग एक ही भंडार से एक सामान्य निर्माण फ़ोल्डर को परियोजनाओं में जोड़ने के लिए करता हूं (क्योंकि मॉड्यूल का कोई सामान्य पदानुक्रम मौजूद नहीं है)। और मैं --ignore-externals -q विकल्पों का उपयोग नहीं करना चाहता क्योंकि मैं इस परियोजना में किए गए सामान्य बिल्ड स्क्रिप्ट में अनदेखी फ़ाइलों और परिवर्तनों के बारे में जानकारी खो देता हूं (जिसे मैं प्रतिबद्ध करना चाहता हूं)। मेरा समाधान उपversण जावा कमांड लाइन लागू करने के लिए svnkit पैच करना था।

AbstractSVNCommand.registerCommand(new SVNStatusCommand()); 
final ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
final PrintStream stream = new PrintStream(bos); 

final SVNCommandLine commandLine = new SVNCommandLine(); 
commandLine.init(new String[] { "status", "PATH..." }); 

final SVNCommandEnvironment env = new SVNCommandEnvironment("mySvn", stream, stream, System.in); 
env.init(commandLine); 
env.initClientManager(); 

final SVNStatusCommand svnStatusCall = new SVNStatusCommand(); 
svnStatusCall.init(env); 
svnStatusCall.run(); 
stream.flush(); 
String result = new String(bos.toByteArray()); 

StringBuffer buffer = new StringBuffer(); 
Scanner scanner = new Scanner(result); 
while (scanner.hasNextLine()) { 
    String line = scanner.nextLine(); 
    if (line.startsWith("X") || line.startsWith("Performing status on external item at")) { 
     // ignore this output 
    } else if (line.trim().isEmpty() == false) { 
     buffer.append(line + "\n"); 
    } 
} 

System.out.println(buffer.toString()); 

इस समस्या का हल है, क्योंकि बाहरी में परिवर्तन भी संशोधित के लिए 'एम' के साथ चिह्नित कर रहे हैं ...