Kiedy używam "svn diff" z linii poleceń, wypisuje ona linie, które się zmieniły, ale także 3 niezmienione linie przed i po kontekście. Wolę widzieć tylko zmienione linie bez kontekstu. Nie byłem w stanie określić żadnych opcji wiersza poleceń, które pozwolą mi sprawić, by zachowywał się w ten sposób. Standardowe 'diff' i 'cvs diff' robią to, co chcę domyślnie. Z pewnością "svn diff" może to zrobić, ale czegoś mi brakuje. Ktoś wie jak?Jak uzyskać BEZ kontekstu podczas używania svn diff
Odpowiedz
Po zapoznaniu się z przydatnym linkiem podanym powyżej, rozwiń, krótka odpowiedź brzmi, że svn został zbudowany -in diff nie może zrobić tego, co chcę. Możesz powiedzieć, aby używał standardowego zewnętrznego porównania i przekazywać arg do tego, aby powiedzieć, że nie chcesz żadnego kontekstu. I umieścić następującą alias w moim .bashrc i teraz wszystko działa dobrze, jeśli mogę użyć że zamiast:
alias svndiff='svn diff --diff-cmd=diff -x -U0'
This thread wydaje się dojść do wniosku, że należy użyć polecenia zewnętrznego diff w celu kontrolowania ilości kontekstu.
Wolę ujednoliconej dyferencjału, więc moje palce zawsze wpisać
svn diff -x -u
co oznacza, że komenda zewnętrzna (GNU diff) jest używana, tak myślę.
Dzięki za przydatne łącze. Zaskakuje mnie, że wbudowane różnice nie mogą zrobić tego, co chcę. Wydaje mi się, że naruszam zasadę uniksowego posiadania najmniejszej wymaganej mocy wyjściowej. Użycie poleceń -x -u daje takie same wyniki, jak nie. 'svn help diff' powiedz mi, że są to wartości domyślne. Może w ogóle nie musisz wpisywać dodatkowych znaków? – DaveBurns
Możesz przesłać wyniki "svn diff" do grep i napisać wyrażenie regularne, aby uzyskać to, co chcesz. Na przykład, spróbuj tego:
svn diff | grep "^[+-\]"
Powyższe polecenie dostaje wszystkie linie, które zaczynają się od „+” lub „-” lub „\”. (Potrzebujesz '\', jeśli chcesz zobaczyć różnice takie jak "\ Brak nowej linii na końcu pliku".)
Działa to dobrze, jeśli chcesz tylko zmienione linie. Jednak nie wyświetla prawidłowych informacji o numerach linii. Na przykład. z 3 liniami kontekstu przed/po "@@ -21,7 +21,7 @@" mówi linia 24 została zmieniona. Bez kontekstu zobaczysz "@@ -24,1 +24,1 @@" – kamczak
Sugestia powyżej nadal produkuje formatu kontekstowego, ale z 0 linii kontekstu. To wciąż nie jest tradycyjny wynik porównania przed subwersją.
Co działa dla mnie jest: svn di --diff-cmd=diff -x --normal
Opcja --normal
(w diff, że statki z OSX) daje tradycyjny format, który niektórzy ludzie wolą.
'-x' jest parametrem rozszerzenia dla' svn diff', powoduje token następujący zaraz po, tutaj '-U0', aby przekazane do polecenia diff określonego przez '--diff-cmd', tutaj' diff'. – valid