Saya bertanggung jawab atas beberapa file Excel dan file skema SQL. Bagaimana saya harus melakukan kontrol versi dokumen yang lebih baik pada file-file ini?
Saya perlu mengetahui bagian yang dimodifikasi (bagian yang berbeda) dalam file ini dan menyimpan semua versi untuk referensi. Saat ini saya menambahkan stempel waktu pada nama file, tetapi saya merasa sepertinya tidak efisien.
Adakah cara atau praktik yang baik untuk melakukan kontrol versi dokumen yang lebih baik?
Omong-omong, editor mengirimi saya file melalui email.
git
version-control
ms-office
versioning
Marcus Thornton
sumber
sumber
Jawaban:
Karena Anda telah menandai pertanyaan Anda dengan git Saya berasumsi bahwa Anda bertanya tentang penggunaan Git untuk ini.
Nah, SQL dump adalah file teks biasa sehingga sangat masuk akal untuk melacaknya dengan Git. Buat saja repositori dan simpan di dalamnya. Ketika Anda mendapatkan versi baru dari sebuah file, cukup timpa dan komit, Git akan mencari tahu semuanya untuk Anda, dan Anda akan dapat melihat tanggal modifikasi, memeriksa versi tertentu dari file ini dan membandingkan versi yang berbeda.
Hal yang sama berlaku
.xlsx
jika Anda mendekompresi mereka..xlsx
file adalah zip direktori file XML (Lihat Cara merakit file xlsx yang valid dengan benar dari sub-komponen internalnya? ). Git akan melihatnya sebagai biner kecuali didekompresi. Anda dapat mengekstrak.xlsx
dan melacak perubahan pada file XML individu di dalam arsip.Anda juga dapat melakukan ini dengan
.xls
file, tetapi masalahnya di sini adalah.xls
formatnya biner, jadi Anda tidak bisa mendapatkan perbedaan yang berarti darinya. Tetapi Anda masih dapat melihat riwayat modifikasi dan memeriksa versi tertentu.sumber
.xlsx
adalah XML, jadi seharusnya berfungsi dengan baik. Secara umum, tidak ada cara mudah untuk membandingkan dua.xls
file. Anda mungkin bisa menambahkan hook pra-komit yang akan diletakkan di.csv
dekatnya dan Anda akan bisa membedakannya.Jawaban yang saya tulis di sini dapat diterapkan dalam kasus ini. Alat yang disebut xls2txt dapat memberikan keluaran yang dapat dibaca manusia dari file .xls. Jadi singkatnya, Anda harus meletakkan ini ke file .gitattributes Anda:
Dan di .git / config:
Tentu saja, saya yakin Anda juga dapat menemukan alat serupa untuk jenis file lain, membuat
git diff
alat yang sangat berguna untuk dokumen perkantoran. Inilah yang saat ini saya miliki di .gitconfig global saya:Buku Pro Git memiliki bab yang bagus tentang topik ini: 8.2 Menyesuaikan Atribut Git - Git
sumber
Saya telah berjuang dengan masalah yang tepat ini selama beberapa hari terakhir dan telah menulis utilitas .NET kecil untuk mengekstrak dan menormalkan file Excel sedemikian rupa sehingga lebih mudah untuk disimpan di kontrol sumber. Saya telah menerbitkan eksekusi di sini:
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
..dan sumbernya di sini:
https://bitbucket.org/htilabs/ooxmlunpack
Jika ada minat, saya senang membuatnya lebih dapat dikonfigurasi, tetapi saat ini, Anda harus meletakkan file yang dapat dieksekusi di folder (misalnya root repositori sumber Anda) dan ketika Anda menjalankannya, itu akan:
Jelas tidak semua hal ini diperlukan, tetapi hasil akhirnya adalah file spreadsheet yang akan tetap terbuka di Excel, tetapi lebih dapat menerima kompresi diffing dan incremental. Selain itu, menyimpan file yang diekstrak juga membuatnya lebih jelas dalam riwayat versi perubahan apa yang telah diterapkan di setiap versi.
Jika ada selera makan di luar sana, saya senang membuat alat ini lebih dapat dikonfigurasi karena saya kira tidak semua orang ingin konten diekstraksi, atau mungkin nilai dihapus dari sel formula, tetapi keduanya sangat berguna bagi saya saat ini.
Dalam pengujian, spreadsheet 2 MB 'membongkar' menjadi 21 MB, tetapi kemudian saya dapat menyimpan lima versi dengan perubahan kecil di antara masing-masing, dalam file data Mercurial 1,9 MB, dan memvisualisasikan perbedaan antara versi secara efektif menggunakan Beyond Compare di mode teks.
NB: meskipun saya menggunakan Mercurial, saya membaca pertanyaan ini saat meneliti solusi saya dan tidak ada solusi khusus Mercurial tentang solusi tersebut, yang seharusnya berfungsi dengan baik untuk Git atau VCS lainnya.
sumber
Tante merekomendasikan pendekatan yang sangat sederhana dalam Mengelola format file berbasis ZIP di Git :
sumber
Gunakan ekstensi dokumen terbuka
.fods
. Ini adalah format markup XML biasa dan tidak terkompresi yang dapat dibuka oleh Excel dan LibreOffice, dan perbedaannya akan terlihat bagus.sumber
Kami telah membuat ekstensi baris perintah Git open-source untuk buku kerja Excel: https://www.xltrail.com/git-xltrail .
Singkatnya, fitur utamanya adalah membuatnya
git diff
berfungsi pada format file buku kerja apa pun sehingga memperlihatkan perbedaan pada konten VBA buku kerja (pada titik tertentu, kami akan membuat ini berfungsi untuk konten lembar kerja, juga).Ini masih awal tapi mungkin bisa membantu.
sumber
Seperti yang disebutkan dalam komentar jawaban lain, file .xlsx hanyalah XML.
Untuk masuk ke direktori XML (yang
git
-able), Anda harus "mengekstrak" file .xlsx ke direktori. Cara cepat untuk melihat ini di Windows adalah dengan mengganti nama file <filename> .xlsx menjadi <filename> .zip, dan Anda akan melihat konten di dalamnya. Saya akan menyimpan ini bersama dengan biner sehingga ketika Anda checkout, Anda tidak perlu melakukan langkah lain untuk membuka dokumen di Excel.sumber
Utilitas Excel ini bekerja sangat baik untuk saya:
Kontrol Versi untuk Excel
Ini adalah alat pembuatan versi yang cukup mudah untuk buku kerja dan makro VBA. Setelah Anda memasukkan sebuah versi, versi tersebut disimpan ke repositori Git di PC Anda. Saya tidak pernah mencobanya kembali. File skema SQL, tapi saya yakin ada jalan lain.
sumber
xltrail
jauh lebih mudah dari itu.Pendekatan saya dengan file Excel mirip dengan Jon, tetapi alih-alih bekerja dengan data teks Excel mentah, saya mengekspor ke format yang lebih ramah.
Ini alat yang saya gunakan: https://github.com/stenci/ExcelToGit/tree/master
Yang Anda butuhkan hanyalah mengunduh file .xlsm (klik tautan Lihat Mentah di halaman ini .) Jangan lupa untuk memeriksa pengaturan Excel seperti yang dijelaskan di readme. Anda juga dapat menambahkan kode untuk mengekspor data SQL ke file teks.
Buku kerja ini adalah konverter dari biner Excel ke file teks dan peluncur alat Windows Git, dan dapat digunakan juga dengan proyek yang tidak berhubungan dengan Excel.
Versi kerja saya dikonfigurasi dengan lusinan buku kerja Excel. Saya menggunakan file tersebut juga untuk membuka Git-gui untuk proyek non Excel, hanya menambahkan folder git dengan tangan.
sumber