Jestem nauczycielem akademickim i uwielbiam pisać jak najwięcej w Emacsie. Kluczową rzeczą, której mi brakuje, jest możliwość łatwego przeglądania zmian, które wprowadziłem do pliku tekstowego w miarę upływu czasu.
Funkcje śledzenia w artykułach Wikipedii lub Dokumentach Google są zgodne z tym, czego szukam. Grałem z systemami kontroli wersji takimi jak git, ponieważ wydaje się, że są one dobrze obsługiwane przez Emacsa, ale uznałem, że są one trudne w użyciu i znacznie bardziej złożone niż to, czego potrzebuję. Rejestrowanie repozytoriów, sprawdzanie i wylogowywanie, wszystko to było po prostu kłopotliwe.
Nie sądzę, że istnieją jakieś pakiety, które zapewniają funkcjonalność, której szukam w stosunkowo przyjazny dla użytkownika sposób?
version-control
writing
Brian Z
źródło
źródło
git
imagit
- github.com/magit/magit - ponieważ już trochę się z tym bawiłeś . Prawdopodobnie będziesz chciał zapoznać się z opcjami wiersza polecenia, aby lepiej zrozumieć, comagit
się dzieje. Emacs nie jest dla niekodujących, ale jesteś na scenie wystarczająco długo, aby się go nie bać - :) Możesz także spróbować grać zgist
: github.com/defunkt/gist.elvc-
grupy poleceń jest uproszczenie procesu korzystania z VCS. Niestety nie są one tak intuicyjne, aby pozwalały użytkownikom bez doświadczenia dobrze z nich korzystać. Z drugiej strony systemy takie jak te, o których wspominasz, są bardzo ograniczające, dlatego szybko rozwija się wymagania, których nie można zaspokoić. gnu.org/software/emacs/manual/html_node/emacs/… istnieje uproszczony mechanizm przechowywania kopii zapasowych, ale z powodu powyższego wolałbym raczej nauczyć się korzystać z niektórych VCS.git
/magit
do kontroli wersji moich artykułów. Na początku wygląda to na zastraszające, ale a) nie musisz uczyć się wszystkiego naraz, i b) korzystanie z niego jest przyjemne po przejściu początkowej krzywej uczenia się. Dobry przepływ pracy pomaga również zdyscyplinować zadania pisania, ponieważ zachęca do adnotacji o tym, co robisz - co jest świetnym sposobem na uzyskanie harmonogramu ewolucji projektu pisania.Odpowiedzi:
Problemem z istniejącymi systemami kontroli wersji nie jest ich złożoność; to fakt, że jest tam tak wiele informacji, że początkujący mogą mieć trudności z zobaczeniem lasu dla drzew (tj. zorientowaniem się, co robią i nie muszą się uczyć, kiedy dopiero zaczynają) ).
Ten post skupi się na tym
git
, jak opisać sterowanie Emacsem za pomocą pakietu dodatków o nazwiemagit
. Tak ,git
jest złożony, ale nie musisz się dużo uczyć, aby go produktywnie wykorzystać do opisanego celu.Zakładam, że masz
git
zainstalowany (jeśli nie, zdobądź go tutaj ) i że w ogóle nie chcesz opuszczać Emacsa.Instalowanie
magit
magit
jestgit
nakładką na Emacsa. Jest dostępny w MELPA i można go zainstalować za pomocą:M-x
package-install
RETmagit
RETPrzy małej szansie, że nie włączyłeś MELPA w konfiguracji, znajdziesz instrukcje, jak to zrobić tutaj .
Konfigurowanie repozytorium
Załóżmy, że masz folder wywoływany
~/writing
w katalogu domowym, który zawiera jeden lub więcej dokumentów, które chcesz poddać kontroli wersji.~/writing
RETshell
RETgit init
i naciśnij RET.to jest to! Masz teraz
git
repozytorium. Nigdzie nie trzeba go „rejestrować”.git
jest rozproszonym systemem kontroli wersji; nie wymaga zdalnego serwera do śledzenia zmian.Sprawdzanie statusu swojego repozytorium
magit-status
RET.Możesz myśleć o buforze, który pojawia się jako „panel sterowania” do pracy z repozytorium. W przypadku nowego repozytorium wygląda to mniej więcej tak:
Możesz poruszać się między różnymi sekcjami tego bufora za pomocą n(
magit-goto-next-section
) i p(magit-goto-previous-section
).Możesz odświeżyć bufor naciskając g(
magit-refresh
).Pamiętaj, że możesz przywołać bufor stanu z dowolnego pliku lub katalogu, który należy do repozytorium, które wcześniej skonfigurowałeś.
Dodawanie plików
Jak widać na zrzucie ekranu, w repozytorium znajdują się trzy pliki, które
git
obecnie nie są śledzone. Abygit
rozpocząć śledzenie pliku, musisz go wyodrębnić : wskaż plik, który chcesz dodać, naciśnij s. Bufor statusu będzie wyglądał następująco:Zobowiązanie się
Po przemieszczeniu jednego lub więcej plików, możesz zatwierdzić je, naciskając c c. Spowoduje to wyświetlenie bufora, który wygląda następująco:
Wpisz swój komunikat zatwierdzenia u góry, a następnie naciśnij, C-c C-caby sfinalizować zatwierdzenie. (Aby przerwać, naciśnij C-c C-k.)
Bufor statusu będzie wyglądał następująco:
Zmiany etapowe
Jeśli wprowadzisz zmiany w śledzonym pliku, zostaną one wymienione w osobnej sekcji („Zmiany niestacjonarne”) w buforze stanu:
Aby przejrzeć zmiany wprowadzone w pliku, przejdź do wiersza z napisem
Modified file-1.txt
i naciśnij TAB:Aby wprowadzić zmiany, naciśnij s:
Wyświetlanie przeszłych zatwierdzeń
Wreszcie, jeśli chcesz przejrzeć poprzednie zatwierdzenia, możesz nacisnąć l l(to dwie małe litery L):
Jak zwykle możesz poruszać się po buforze, który pojawia się w ni p. Magit pokaże zmiany związane z poszczególnymi zatwierdzeniami wymienionymi w tym buforze w osobnym oknie.
Podsumowanie
Z muszli:
git init
: Zainicjujgit
repozytorium w bieżącym kataloguZ dowolnego pliku lub katalogu powiązanego z
git
repozytorium:magit-status
RETZ bufora stanu:
s aby dodać nowe pliki lub zmiany etapów
c c zatwierdzać zmiany etapowe
to jest to! :)
źródło
git init
z powłoki. Jeśli zadzwoniszM-x magit-status
gdzieś poza repozytorium git, zaoferuje utworzenie jednego. (Musisz jednak wywołać go ponownie, aby wyświetlić bufor stanu po zakończeniu instalacji).magit-diff-refine-hunk
aby uzyskać pożądane zachowanie. Dodaj(setq magit-diff-refine-hunk t)
lub(setq magit-diff-refine-hunk 'all)
do pliku inicjującego. Możesz zrobić,C-h v
magit-diff-refine-hunk
RET
aby uzyskać więcej informacji na temat znaczenia różnych ustawień.Oprócz
magit
(jak umiejętnie pokazuje odpowiedź @ itsjeyd) możesz również spróbowaćgit-timemachine
, który zapewnia funkcje szybkiego przełączania między starszymi wersjami pliku podgit
kontrolą wersji. Zgodnie ze stroną github, następujące domyślne skróty klawiszowe dają ci wyobrażenie o tym, co możesz zrobić:p
Odwiedź poprzednią wersję historycznąn
Odwiedź następną historyczną wersjęw
Skopiuj skrót skrótu bieżącej wersji historycznejW
Skopiuj pełny skrót bieżącej wersji historycznejq
Wyjdź z wehikułu czasu.źródło
Podejrzewam, że tryb kopii zapasowych i / lub Backup Walker są bardzo interesujące.
Oba mają na celu wykorzystanie istniejących mechanizmów tworzenia kopii zapasowych w Emacsie, a także zapewniają lepszy dostęp do historii plików i ich widoczność, bez konieczności dodatkowego VCS.
źródło
Jak wspomniano, prostym sposobem na posiadanie różnych wersji pliku jest system kopii zapasowych Emacs.
Spowoduje to użycie dedykowanego katalogu do numerowanych kopii zapasowych, który nigdy nie zostanie automatycznie usunięty. Następnie możesz użyć C-u C-x C-sdo utworzenia innej wersji w dowolnym momencie.
Chociaż myślę, że nie ma łatwego, gotowego do użycia interfejsu do np. Różnicowania tych wersji. Trzeba więc ręcznie otworzyć jedną lub dwie kopie zapasowe i użyć
ediff-buffers
na nich i / lub oryginalnym buforze.źródło
m
punktem przejścia do drugiego pliku i naciśnij=
).Nie miałem jeszcze okazji skorzystać z tego rozwiązania, ale możesz też rozważyć flashowanie Cory'ego Doctorowa i Thomasa Gideona . Oto, co ma do powiedzenia Doctorow :
To powiedziawszy, nigdy nie miałem okazji tego przetestować, ponieważ skończyłem pisać dużo rzeczy w trybie org, dużo programowałem i ... cóż ... trochę lepiej się posługiwałem
magit
, i ostatecznie po prostu ... nie musiałem tego używać.W każdym razie to rozwiązanie było skierowane do pisarzy pracujących nad nietechnicznymi projektami. Może się okazać, że może pasować do twoich wymagań.
źródło
Chociaż jest to absolutnie niezwiązane
emacs
, nadal możesz zapisywać pliki tekstowe w Dropbox, a jeśli jesteś profesjonalnym użytkownikiem, możesz skorzystać z rozszerzonej historii wersji . (Jeśli chcesz szyfrowania, możesz spojrzeć na SparkleShare ).Potem jest flashbake, który jest nieco zautomatyzowany ( tutaj jest tutorial ).
Również został poproszony gdzie indziej też , dla których odpowiedzi można znaleźć użyteczne.
źródło
Możesz użyć Dropbox. To sprawia, że poprawna wersja twojego pliku za każdym razem, gdy naciskasz Cx Cs. Do szyfrowania moich plików tekstowych używam GNU Privacy Guard, obsługiwanego przez Emacsa.
źródło