Saya seorang akademisi dan saya suka melakukan sebanyak mungkin tulisan saya di Emacs. Hal utama yang hilang bagi saya adalah kemampuan untuk dengan mudah meninjau perubahan yang saya buat pada file teks dari waktu ke waktu.
Fitur pelacakan pada artikel Wikipedia atau Google Documents keduanya sesuai dengan apa yang saya cari. Saya telah bermain dengan sistem kontrol versi seperti git karena mereka tampaknya didukung dengan baik oleh Emacs, tetapi saya menemukan mereka sulit untuk digunakan dan jauh lebih kompleks daripada yang saya butuhkan. Mendaftarkan repositori, check in dan out, semua itu hanya merepotkan.
Saya kira tidak ada paket di luar sana yang menyediakan fungsionalitas yang saya cari dengan cara yang relatif ramah pengguna?
version-control
writing
Brian Z
sumber
sumber
git
danmagit
- github.com/magit/magit - karena Anda sudah sedikit bermain-main dengannya. Anda mungkin ingin membiasakan diri dengan opsi baris perintah sehingga Anda akan memiliki pemahaman yang lebih baik tentang apa yangmagit
sedang dilakukan. Emacs bukan untuk non-coders, tetapi Anda sudah cukup lama berada di lokasi untuk tidak takut - :) Anda mungkin juga ingin mencoba bermain dengangist
: github.com/defunkt/gist.elvc-
kelompok perintah adalah untuk menyederhanakan proses menggunakan VCS. Sayangnya, mereka tidak seintuitif yang memungkinkan pengguna tanpa pengalaman untuk memanfaatkannya dengan baik. Di sisi lain, sistem seperti yang Anda sebutkan sangat terbatas, sehingga orang dengan cepat mengembangkan tuntutan yang tidak dapat mereka penuhi. gnu.org/software/emacs/manual/html_node/emacs/… ada mekanisme sederhana untuk menyimpan cadangan, tetapi karena di atas, saya lebih suka belajar menggunakan beberapa VCS sebagai gantinya.git
/magit
untuk kontrol versi dari makalah saya. Tampaknya menakutkan untuk memulai, tetapi a) Anda tidak harus mempelajarinya sekaligus, dan b) menyenangkan untuk digunakan setelah melewati kurva belajar awal. Alur kerja yang baik juga membantu Anda mendisiplinkan tugas menulis Anda, karena mendorong Anda untuk membubuhi keterangan apa yang Anda lakukan - yang merupakan cara terbaik untuk mendapatkan garis waktu dari evolusi proyek penulisan.Jawaban:
Masalah dengan sistem kontrol versi yang ada bukanlah kompleksitasnya; itu adalah fakta bahwa ada begitu banyak informasi di luar sana sehingga sangat sulit bagi pemula untuk melihat hutan untuk pepohonan (yaitu, untuk mencari tahu apa yang mereka lakukan dan tidak perlu belajar ketika mereka baru memulai. ).
Posting ini akan fokus pada
git
, dan menjelaskan cara mengontrolnya dari Emacs menggunakan paket add-on yang disebutmagit
. Ya ,git
rumit, tetapi Anda tidak perlu belajar banyak untuk menggunakannya secara produktif untuk tujuan yang Anda jelaskan.Saya akan berasumsi bahwa Anda telah
git
menginstal (jika tidak, dapatkan di sini ), dan bahwa Anda tidak ingin meninggalkan Emacs sama sekali.Menginstal
magit
magit
adalahgit
ujung depan untuk Emacs. Ini tersedia dari MELPA dan Anda dapat menginstalnya melalui:M-x
package-install
RETmagit
RETJika Anda belum mengaktifkan MELPA dalam konfigurasi Anda, Anda dapat menemukan instruksi tentang cara melakukannya di sini .
Menyiapkan repositori
Katakanlah Anda memiliki folder bernama
~/writing
di direktori home Anda yang berisi satu atau lebih dokumen yang ingin Anda letakkan di bawah kontrol versi.~/writing
RETshell
RETgit init
dan tekan RET.Itu dia. Anda sekarang memiliki
git
repositori. Tidak perlu "mendaftar" di mana saja.git
adalah sistem kontrol versi terdistribusi ; itu tidak memerlukan server jauh untuk melacak perubahan.Memeriksa status repositori Anda
magit-status
RET.Anda dapat memikirkan buffer yang muncul sebagai "panel kontrol" Anda untuk bekerja dengan repositori Anda. Untuk repositori baru, tampilannya seperti ini:
Anda dapat menavigasi antara berbagai bagian buffer ini menggunakan n(
magit-goto-next-section
) dan p(magit-goto-previous-section
).Anda dapat menyegarkan buffer dengan menekan g(
magit-refresh
).Perhatikan bahwa Anda dapat memunculkan buffer status dari file atau direktori apa pun yang termasuk repositori yang Anda buat sebelumnya.
Menambahkan file
Seperti yang dapat Anda lihat di tangkapan layar, ada tiga file di repositori yang
git
saat ini tidak dilacak. Untuk memberitahugit
untuk mulai melacak file, Anda perlu tahap itu: Dengan titik pada file yang ingin Anda tambahkan, tekan s. Buffer status akan terlihat seperti ini:Berkomitmen
Setelah melakukan satu atau lebih file, Anda dapat mengkomitnya dengan menekan c c. Ini akan memunculkan buffer yang terlihat seperti ini:
Masukkan pesan komit Anda di bagian atas dan kemudian tekan C-c C-cuntuk menyelesaikan komit. (Untuk membatalkan, tekan C-c C-k.)
Buffer status akan terlihat seperti ini:
Pementasan perubahan
Jika Anda membuat perubahan pada file yang dilacak, mereka akan terdaftar di bagian terpisah ("Perubahan yang tidak bertahap") di buffer status:
Untuk meninjau perubahan yang Anda buat pada file, navigasikan ke baris yang mengatakan
Modified file-1.txt
dan tekan TAB:Untuk melakukan perubahan ini, tekan s:
Melihat komitmen sebelumnya
Terakhir, jika Anda ingin meninjau komitmen sebelumnya, Anda dapat menekan l l(itu adalah dua huruf kecil L):
Seperti biasa, Anda dapat menavigasi buffer yang muncul dengan ndan p. Magit akan menampilkan perubahan yang terkait dengan komit individual yang tercantum dalam buffer ini di jendela terpisah.
Ringkasan
Dari shell:
git init
: Menginisialisasigit
repositori di direktori saat iniDari file atau direktori apa pun yang terkait dengan
git
repositori:magit-status
RETDari buffer status:
s untuk menambahkan file baru atau perubahan tahap
c c untuk melakukan perubahan bertahap
Itu dia. :)
sumber
git init
dari shell. Jika Anda meneleponM-x magit-status
suatu tempat di luar repositori git, ia akan menawarkan untuk menyiapkannya. (Tapi Anda harus memanggilnya lagi untuk memunculkan buffer status setelah Anda selesai dengan pengaturan).magit-diff-refine-hunk
untuk mendapatkan perilaku yang Anda inginkan. Tambahkan(setq magit-diff-refine-hunk t)
atau(setq magit-diff-refine-hunk 'all)
ke file init Anda. Anda dapat melakukannyaC-h v
magit-diff-refine-hunk
RET
untuk mendapatkan informasi lebih lanjut tentang arti pengaturan yang berbeda.Selain
magit
(seperti yang diperlihatkan oleh jawaban itsjeyd), Anda juga dapat mencobagit-timemachine
, yang menyediakan fasilitas untuk perputaran cepat melalui versi file yang lebih lama di bawahgit
kontrol versi. Menurut halaman github-nya, keybindings default berikut memberi Anda rasa apa yang dapat Anda lakukan:p
Kunjungi versi bersejarah sebelumnyan
Kunjungi versi bersejarah berikutnyaw
Salin hash singkat dari versi bersejarah saat iniW
Salin hash lengkap dari versi bersejarah saat iniq
Keluar dari mesin waktu.sumber
Saya kira Anda akan menemukan Mode Cadangan dan / atau Cadangan Walker sangat menarik.
Keduanya bertujuan untuk meningkatkan mekanisme cadangan yang ada di Emacs, dan memberikan akses yang lebih baik ke dan visibilitas riwayat file Anda, tanpa memerlukan VCS tambahan.
sumber
Seperti yang disebutkan, cara sederhana untuk memiliki berbagai versi file adalah sistem cadangan Emacs.
Ini akan menggunakan direktori khusus untuk cadangan bernomor, yang tidak akan pernah dihapus secara otomatis. Kemudian Anda dapat menggunakannya C-u C-x C-suntuk membuat versi lain kapan saja.
Meskipun, saya pikir, tidak ada antarmuka yang mudah dan siap digunakan untuk mis. Membedakan versi-versi ini. Jadi, Anda harus secara manual membuka satu atau dua dari cadangan itu dan menggunakannya
ediff-buffers
pada dan / atau buffer asli.sumber
m
titik pindahkan ke file lainnya dan tekan=
).Saya belum memiliki kesempatan untuk menggunakan solusi ini, tetapi Anda mungkin juga ingin mempertimbangkan flashbake Cory Doctorow dan Thomas Gideon . Inilah yang dikatakan Doctorow tentang hal itu :
Yang sedang berkata, saya tidak pernah memiliki kesempatan untuk mengujinya, karena saya akhirnya menulis banyak hal dalam mode-org, dan banyak pemrograman, dan ... yah ... Saya agak lebih baik dalam menggunakan
magit
, dan pada akhirnya, aku agak ... tidak perlu menggunakannya.Bagaimanapun, solusi ini ditujukan untuk penulis yang bekerja pada proyek non-teknis. Anda mungkin menemukan bahwa itu mungkin sesuai dengan kebutuhan Anda.
sumber
Meskipun benar-benar tidak terkait
emacs
, Anda masih dapat menyimpan file teks ke Dropbox dan jika Anda pengguna pro, Anda dapat menggunakan riwayat versi yang diperluas . (Jika Anda ingin enkripsi, Anda mungkin ingin melihat SparkleShare .)Lalu ada flashbake yang sedikit otomatis (di sini ada tutorial ).
Juga itu bertanya tempat lain juga , yang jawaban yang Anda mungkin menemukan berguna.
sumber
Anda dapat menggunakan Dropbox. Itu membuat versi file Anda dapat direvisi setiap kali Anda menekan Cx Cs. Untuk enkripsi file teks saya, saya menggunakan GNU Privacy Guard, yang didukung oleh Emacs.
sumber