SVN vs GIT

caer
  • Rejestracja:około 11 lat
  • Ostatnio:10 miesięcy
  • Postów:465
0

Próbowałem używać git-svn, ale wymiękłem po 4 godzinach klonowania repo a końca nie było widać. Teraz po prostu zainicjowałem repo gita wewnątrz repo SVNa i korzystam z niego normalnie, robiąc sobie zwykłe gitowe branche, potem to merge'uje i wrzucam do SVNa. Idealnie nie jest, ale daje radę.

somekind
Nie próbowałeś pobrać określonej liczby ostatnich rewizji z SVN?
caer
już ktoś to proponował ale widzę że koment zniknął. nie próbowałem, zresztą jestem dość zadowolony z obecnego rozwiązania
Azarien
koment zniknął bo podawał złe polecenie, ale idea pozostaje.
0

Zna ktoś jakieś dobre źródło w którym są przedstawione zalety git nad svn w celu przekonania osób do gita ?

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
3

@Złoty Młot, jeżeli komuś nie wystarcza, że cały cywilizowany świat używa gita, hipsterzy używają hg lecz idea ta sama, to nie ma na niego argumentów.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8399
1

Obejrzyjcie sobie nagrania z Linusem Torvaldsem na Youtube jak mówi o Gicie, to odechce się wam SVNów i będziecie wiedzieć co dobre ;)


Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:minuta
1
Koziołek napisał(a):

jeżeli komuś nie wystarcza, że cały cywilizowany świat używa gita, hipsterzy używają hg lecz idea ta sama, to nie ma na niego argumentów.

LukeJL napisał(a):

nagrania z Linusem Torvaldsem na Youtube jak mówi o Gicie, to odechce się wam SVNów

„cały cywilizowany świat” nie jest dla mnie argumentem, bo wyznaję zasadę że dobre jest to co jest dobre a nie to czego ludzie używają.
Linus wyzywający wszystkich od głupków również nie jest dla mnie żadnym argumentem.
Ani nie jest nim poroniony command line Gita, i jego czasem zbyt zaawansowany imbecylizm.

Ale jest - i to silnym - argumentem sama idea systemu rozproszonego. Że na lokalnym repozytorium robisz commity i dopiero później robisz push na zdalne - dzięki temu commity można robić często i małe (kilkulinijkowe), a nie wielkie z kilku dni.
Że Git jest szybki przy wielkich operacjach.
Że masz całe repozytorium u siebie na dysku - historię wszystkich branchy - i możesz pracować bez chwilowego dostępu do „głównego” repo, robiąc commity i branche.
Że nie marudzi o konflikcie w przypadkach trywialnych, co jest zmorą SVN-a.
Że dzięki powyższemu merge jest na porządku dziennym, a nie jest wielką, straszną operacją.
Że kiedy (w przypadku projektów open source) autorzy się rozmyślają i zamykają repo to wiele osób ma klon u siebie - i to nie tylko ostatni (albo nieostatni) commit, ale całą historię.
Że „postawienie” repo zdalnego jest operacją trywialną i nie wymaga żadnego dodatkowego softu serwerowego poza dostępem na serwer przez ssh. (a nawet przez windowsowy udział się da, ale wtedy niestety zamula)

I choć wykonanie Gita pozostawia sporo do życzenia (na granicy wtf - nie miałem do czynienia z hg, nie mam porównania) to pod względem wygody pracy to zupełnie inna liga niż Subversion a przed nim CVS.

edytowany 1x, ostatnio: Azarien
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

SVN:

  • (-) nie znalazłem dobrego klienta GUI pod Linux
  • (-) nie znam żadnego fajnego publicznego serwisu który pozwala na założenie repo za darmo
  • ma branche i tagi - obsługiwane jako normalne katalogi, ich tworzenie to wg instrukcji komenda wydajna bo zdalna i polegająca mniej więcej na zrobieniu linka symbolicznego, korzystanie z nich zależy od użytkowników: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.commonpatterns.html
  • z command line bardzo rzadko się zacina (i potrzebny svn cleanup)
  • (-) wtyczka do Eclipse potrafi się zaciąć i pokazywać stary stan lokalnej kopii (potrzebny wtedy Update to HEAD)

GIT:

  • (+) są klienty GUI na Linux
  • (+) są publiczne serwisy do zakładania repo za darmo: github, bitbucket
  • command line podobny (potrzebna dodatkowa komenda push)

Edit: https://svnvsgit.com/

edytowany 1x, ostatnio: vpiotr
MarekR22
github poza git-em obsługuje też svn-a (bitbcuket chyba też).
vpiotr
@MarekR22: możliwe, ale nie korzystałem - to jest normalna praca czy są jakieś utrudnienia?
MarekR22
też nie korzystam. Jak mówi Linus: SVN nie chcę dotykać nawet 10cio stopowym kijem.
somekind
Ta śmieszna strona był już tutaj omawiana: SVN vs GIT
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:minuta
2
LukeJL napisał(a):

Obejrzyjcie sobie nagrania z Linusem Torvaldsem na Youtube jak mówi o Gicie, to odechce się wam SVNów i będziecie wiedzieć co dobre ;)


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
ML
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 9 godzin
  • Postów:855
0

GIT jest lepszym wyborem ale jeżeli ktoś używa w jakimś projekcie SVNa i to mu się sprawdza to nie widzę powodu żeby nagle to wszystko rzucił i migrował na GITa.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Jedyny "minus" gita jaki widzę, jest taki że "there is more than one way to do it". Daje to większą elastyczność, ale jednocześnie może być utrudnieniem dla nowych użytkowników.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Trochę bardziej serio. SVN ma jedną ogromną przewagę nad gitem. Na chwilę obecną jest bardzo dobrze zintegrowany z pakietem Office i pozwala na porównywanie dokumentów worda, excela czy powerpointa bez sztuczek z konwersją do np. markdown (jak robi pandoc). Jest to o tyle ważne, że wielu użytkowników nie ogarnia wbudowanego śledzenia zmian w dokumentach, albo z jakiegoś powodu nie może go użyć; osadzone obiekty, zakresy nazwane, niektóre content kontrolki nie działają ze śledzeniem zmian. Dlatego jest on fajnym rozwiązaniem gdy mamy do śledzenia pliki offica (w tym formaty binarne)


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
somekind
No tak, czyli to jest zaleta dla HR i PM, nie dla programistów.
Koziołek
@somekind, no nie do końca, bo akurat HR czy PMowie dość dobrze opanowali offica. W przeciwieństwie do koderów :)
somekind
No ok. Tylko teraz nie wiem, po co koder ma dotykać Office.
Koziołek
Specyfikacja/dokumentacja... tak wiem JIRA, wiki i inne tego typu wynalazki, ale nie wszędzie i nie zawsze.
somekind
No chyba, że tak. W takim razie pierwszy raz w życiu się cieszę, że mam Jirę w pracy. :P
0

SVN potrafi merge'ować pliki binarne(przydatne przy tworzeniu np. gier).

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
0
Wybitny Kot 123 napisał(a):

SVN potrafi merge'ować pliki binarne(przydatne przy tworzeniu np. gier).

A jak robisz review dla zmian w pliku binarnym? Jak rozwiązujesz konflikty?


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

@Wibowit: podpinasz edytor, który potrafi to zrobić. To co pisałem wyżej n.t. plików w starym formacie office. BTW, ciekawostka git nie skaluje się dobrze przy dużych projektach (dziesiątki tysięcy plików). Przy czym SVN nie jest tu lepszy.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
0

Co to znaczy, że się nie skaluje? Na tym repo leży dużo plików i jakoś to działa: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Kopiuj
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Cloning into 'linux'...
remote: Counting objects: 5164230, done.
remote: Total 5164230 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5164230/5164230), 893.37 MiB | 3.27 MiB/s, done.
Resolving deltas: 100% (4331655/4331655), done.
Checking connectivity... done.
Checking out files: 100% (57202/57202), done.

ATSD:
A dla nowego formatu Office to działa? Wydaje mi się, że są małe szanse, bo nowe formaty Office to pliki ZIP, a tu średnio można zrobić merge skoro lekka zmiana nieskompresowanych danych może pociągnąć za sobą dużo większe zmiany skompresowanych danych. No chyba, że będziemy mieć narzędzie, które rozpakuje pliki, zrobi merge na rozpakowanych i spakuje z powrotem. Tyle, że w takim przypadku wsparcie od SVN byłoby bez znaczenia.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 3x, ostatnio: Wibowit
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Nowe formaty office, to zipowany XML. Nawet coś takiego sami wyrzeźbiliśmy jak trzeba było robić diffa bez rejestru zmian po stronie dokumentu (kod w scali, bo porównanie drzew to banał w sumie). W przypadku SVNa jest to o tyle proste, że on ma do tego wtyczki :) Przy czym gita też można tak skonfigurować.

No właśnie skonfigurować. W przypadku gita najłatwiej jest:

Kopiuj
[diff "bin"]
    textconv = hexdump -v -C

i mieć nadzieję, że mamy hexdumpa w systemie. W przypadku SVNa:

Kopiuj
svn diff --force obrazek.png

i otrzymujesz „binarny diff”. W dodatku działa wszędzie.

Co do skalowania. Microsoft przeszedł w pewnym momencie na gita i miał problemy. Wszystko rozbiło się o kombinację „dużo dużych plików”.

IMO, obecnie git i tylko git. Czekam, aż semantic VCS stanie się powszechniejszy.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
0

W zasadzie to gościom chodzi o to, że jak nawpychają do repo dużą ilość danych to wtedy to się ślimaczy:

Kopiuj
The largest challenge Git faces in the enterprise arguably stems from its own limitations and performance problems when dealing with large numbers of files or very large files. Git repositories become so slow and unwieldy as they grow that the largest practical size is broadly recognized as being between 1GB and 2GB of content.

Nie napisali nic o dziesiątkach tysięcy plików.
Przy repozytoriach ważących więcej jak 2 GB i tak warto je podzielić na mniejsze, z wielu względów.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Tyle tylko, że jak podzielisz repo to zaczynają się problemy z zarządzaniem dostępami (trzeba to robić).


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:minuta
0

A dla nowego formatu Office to działa? Wydaje mi się, że są małe szanse, bo nowe formaty Office to pliki ZIP, a tu średnio można zrobić merge skoro lekka zmiana nieskompresowanych danych może pociągnąć za sobą dużo większe zmiany skompresowanych danych. No chyba, że będziemy mieć narzędzie, które rozpakuje pliki, zrobi merge na rozpakowanych i spakuje z powrotem. Tyle, że w takim przypadku wsparcie od SVN byłoby bez znaczenia.

Raczej trzymałbym pliki office'a w repo w postaci rozpakowanych katalogów - dzięki temu Git zarządzałby zawartością. Pakowanie i rozpakowywanie robiłby jakiś skrypt automatyzujący to zadanie.

hauleth
A ja w Git LFS
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
0

Z artykułu MS wynika, że narzekają oni na to, że nie ma darmowego narzędzia, którym zarządzałoby się wieloma repozytoriami:

Kopiuj
Another set of challenges revolves around hosting so many repositories and protecting their content. Git includes its own daemon for easy hosting, but such hosting is completely open. It requires no authorization, so anyone on the network can see or do anything. That works nicely for a variety of use cases, but it’s a recipe for ulcers in the enterprise.
(...)
These shortcomings explain the explosion of third-party hosting tools and services such as GitHub, GitLab, and Atlassian Stash, all of which may involve their own trade-offs.

Wydaje mi się to trochę naciągane. Z jednym dużym repo nie dałoby się podzielić go na obszary z różnymi poziomami dostępu. Więc jak jedyne co robimy to dzielimy to możemy zostawić tak jak było, czyli dla każdego repozytorium dać te same prawa, które wcześniej miało duże repo.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:minuta
1

Yyy ale przecież można repo postawić na Linuksie z kontem shellowym po SSH (żadnego dodatkowego demona - tylko sshd) i uprawnienia ustalać do woli, autoryzację po kluczu SSH, itp.

Chyba że ja nie rozumem natury problemu :-)

edytowany 1x, ostatnio: Azarien
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:2 dni
  • Lokalizacja:Wrocław
0
Koziołek napisał(a):

Tyle tylko, że jak podzielisz repo to zaczynają się problemy z zarządzaniem dostępami (trzeba to robić).

Wystarczy, że zapis jest ograniczony dla członków zespołu pracującego nad aplikacją znajdującą się w danym repozytorium i problemu nie ma.
Tzn. problemy mogą mieć organizacje biurokratyczne, które same sobie jakieś problemy wytwarzają, ale o to wątek o gicie, a nie o patologiach.

Wibowit napisał(a):

Z artykułu MS wynika, że narzekają oni na to, że nie ma darmowego narzędzia, którym zarządzałoby się wieloma repozytoriami:

Jakiego artykułu MS?

somekind
Ale jaki to ma związek z MS?
Koziołek
Autor opisuje użycie gita w kontekście pracy z codebasem windowsa/offica.
somekind
No, ale to nadal nie artykuł MS. ;)
Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 11 godzin
0
Wibowit napisał(a):

W zasadzie to gościom chodzi o to, że jak nawpychają do repo dużą ilość danych to wtedy to się ślimaczy:
Nie napisali nic o dziesiątkach tysięcy plików.
Przy repozytoriach ważących więcej jak 2 GB i tak warto je podzielić na mniejsze, z wielu względów.

Napisali, ale nie w tym artykule na infotech (bo on w ogóle pisał facet od Perforce - którego BTW Microsoft używał wcześniej), tylko w ogłoszeniu Git VFS:

For example, the Windows codebase has over 3.5 million files and is over 270 GB in size.
#

W ogóle polecam cały wątek na reddicie gdzie ludzie z MSFT mówią o sensie tego rozwiązania, jak i m.in. dlaczego mają jedno gigantyczne repo dla Windows. Z kolei Google ma monorepo dla wszystkiego, tak BTW ;-)

edytowany 3x, ostatnio: Ktos
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:minuta
2

git powstał by utrzymywać historię kodu a nie historię binarek.
Zrzędzenie, że git nie jest szybkie w takim scenariuszu, to jak zrzędzenie, że są problemy zaoraniem pola za pomocą Ferrari mimo, że ma silnik o odpowiedniej mocy.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Ktos
Zasadniczo Git LFS (Large File Storage) jest do binarek ;-)
Koziołek
@MarekR22: http://www.ferrariagri.it/ Lambo chyba ma w głównej linii kilka modeli.
spartanPAGE
tak jak i git ma wspomniane git lfs ;P
Azarien
@Koziołek: Lambo to nie Ferrari :-) ale obie firmy produkują traktory, więc z tym oraniem pola to chybiony przykład.
DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
2

Yubby dibby dibby dibby dibby dibby dibby dum..
Ktos
O właśnie tych postów od bharry szukałem i nie mogłem sobie przypomnieć gdzie ja to mam w historii :-)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)