2011-10-20 4 views
18

Mac OS X의 명령 줄에서 IntelliJ를 실행하여 diff 도구를 사용하려고합니다. 이론적으로는 idea.sh diff file1 file2이 작동해야합니다. 실제로 나는 (내가 readlink 등등에 몇몇 논쟁을 제거하는) 나는 주변에 일했다는 것을 생각하는 파일을 가진 몇몇 문제점이있다.
그러나 시작될 때 라이센스 정보를 입력하길 원합니다 (Intellij의 인스턴스가 이미 실행 중이며 라이센스가 있음에도 불구하고). 그렇다면 맥 오에스텐에서 커맨드 라인 세계와 비 커맨드 라인 세상이 분리되어 있다고 생각하니? 그게 사실이야? 내가 선택할 때
또한 30 일이 나에게 다음과 같은 예외를 제공하기 위해 진행 평가 후면 :명령 줄 Mac OS X의 IntelliJ

java.lang.IllegalArgumentException: Argument 0 for @NotNull parameter of com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.getProviders must not be null 
    at com.intellij.openapi.fileEditor.impl.FileEditorProviderManagerImpl.getProviders(FileEditorProviderManagerImpl.java) 
    at com.intellij.openapi.diff.impl.highlighting.EditorPlaceHolder.setContent(EditorPlaceHolder.java:73) 
    at com.intellij.openapi.diff.impl.highlighting.DiffPanelState$1.run(DiffPanelState.java:38) 
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:864) 
... 

답변

20

대신 /Applications/IntelliJ IDEA 10.app/Contents/MacOS/idea을 실행 해보십시오. idea.sh은 Mac 용으로 설계되지 않았으므로 일부 수동 변경 없이는 작동하지 않습니다.

+0

그것은 더 나은 - 아니 라이센스 문제,하지만 여전히 (지금 대화 상자에서) 나에게 같은 오류를 제공합니다 : 오류 보여주는 DIFF : 인수 0 COM/인 IntelliJ/OpenAPI를/fileEditor의 @NotNull 매개 변수/impl/FileEditorProviderManagerImpl.getProviders는 null이 아니어야합니다. –

+0

아, 신경 쓰지 마세요. 파일에 확장명이 있어야합니다! –

+0

그래서이 diff 작동하지만 병합 기능을 호출하려면 (충돌 해결 후 저장할 수) 싶습니다. 이게 가능합니까? –

6

Idea는 경로가 정규화 될 것으로 예상하므로 작은 도우미 스크립트를 작성했습니다. 호출 같은 :

$ idiff foo.txt bar.txt 

idiff의 코드 :

#!/bin/bash 
idea='/Applications/IntelliJ IDEA 10.app/Contents/MacOS/idea' 
left=`abspath $1` 
right=`abspath $2` 
"$idea" diff $left $right 

이 아마 실제 abspath 도구는 곳이지만, 나는 간단한 손으로 압연 하나 있습니다

$ cat `which abspath` 
#!/bin/bash 
ORIG_DIR=`pwd` 
for fn in $* ; do 
    if [ -e $fn ]; then 
    d=`dirname $fn` 
    if [ -z $d ]; then 
     echo `pwd`/$fn 
    else 
     cd $d 
     echo `pwd`"/"`basename $fn` 
    fi 
    else 
    echo "Don't know how to process $fn" 1>&2 
    exit 1 
    fi 
    cd $ORIG_DIR 
done 
52

인 IntelliJ 수 명령 줄 실행기를 설치하고 PATH 디렉토리에 추가하면 시스템의 다른 명령으로 사용됩니다. 명령은 "아이디어"입니다.

IntelliJ Command-line Launcher