Bisakah Anda menjelaskan file apa yang menghasilkan header seperti itu?
kworr
@kworr itu pertanyaan konyol, perbedaan apa pun dalam format terpadu memiliki tajuk rentang.
Yuval Adam
@YuvalAdam: sebenarnya format diff unified memiliki lebih banyak field yang harus diisi seperti [- +] <position>, <lines> dan di sini kita tidak memiliki perubahan yang ditampilkan tetapi perubahan ini menyentuh baris pertama file.
kworr
Jawaban:
69
Ini adalah pengenal diff hunk terpadu. Ini didokumentasikan oleh GNU Diffutils.
Format keluaran terpadu dimulai dengan tajuk dua baris, yang terlihat seperti ini:
Cap waktu terlihat seperti itu 2002-02-21 23:30:39.942229878 -0800 menunjukkan tanggal, waktu dengan pecahan detik, dan zona waktu. Detik pecahan dihilangkan pada host yang tidak mendukung stempel waktu pecahan.
Anda dapat mengubah konten header dengan --label=labelopsi; lihat Lihat Nama Alternatif .
Berikutnya datang satu atau lebih bongkahan perbedaan; setiap bongkah menunjukkan satu area di mana file berbeda. Hunk format terpadu terlihat seperti ini:
Jika bingkah hanya berisi satu baris, hanya nomor baris awalnya yang muncul. Jika tidak, nomor barisnya akan terlihat sepertistart,count . Bongkahan kosong dianggap mulai dari garis yang mengikuti bongkahan tersebut.
Jika sebongkah dan konteksnya berisi dua atau lebih baris, nomor barisnya akan terlihat seperti . Jika tidak, hanya nomor baris akhirnya yang muncul. Bongkahan kosong dianggap berakhir di garis yang mendahului bongkah tersebut.start,count
Baris yang umum untuk kedua file dimulai dengan karakter spasi. Garis-garis yang sebenarnya berbeda antara kedua file tersebut memiliki salah satu karakter indikator berikut di kolom kiri cetak:
+
Garis telah ditambahkan di sini ke file pertama.
-1,6berarti bagian dari file pertama ini dimulai pada baris 1 dan menunjukkan total 6 baris. Oleh karena itu, ini menunjukkan baris 1 hingga 6.
1
2
3
4
5
6
-berarti "tua", seperti yang biasa kita sebut sebagai diff -u old new.
+1,4berarti bahwa bagian dari file kedua ini dimulai pada baris 1 dan menampilkan total 4 baris. Oleh karena itu, ini menunjukkan baris 1 hingga 4.
+ berarti "baru".
Kami hanya memiliki 4 baris, bukan 6 karena 2 baris telah dihapus! Yang baru hanya:
01
04
05
06
@@ -11,6 +9,4 @@ untuk bongkahan kedua adalah analog:
pada file lama, kami memiliki 6 baris, dimulai dari baris 11 dari file lama:
11
12
13
14
15
16
pada file baru, kami memiliki 4 baris, dimulai dari baris 9 file baru:
11
12
13
16
Perhatikan bahwa baris tersebut 11adalah baris ke-9 dari file baru karena kami telah menghapus 2 baris pada bagian sebelumnya: 2 dan 3.
Hunk header
Bergantung pada versi dan konfigurasi git Anda, Anda juga bisa mendapatkan baris kode di sebelah @@baris tersebut, misalnya di func1() {dalam:
@@ -4,7 +4,6 @@ func1() {
Ini juga bisa diperoleh dengan -pbendera polos diff.
Contoh: file lama:
func1() {
1;
2;
3;
4;
5;
6;
7;
8;
9;
}
Jika kita menghapus garis 6, perbedaannya menunjukkan:
@@ -4,7 +4,6 @@ func1() {
3;
4;
5;
- 6;
7;
8;
9;
Perhatikan bahwa ini bukan baris yang benar untuk func1: baris yang dilewati 1dan 2.
Fitur luar biasa ini sering kali memberi tahu dengan tepat fungsi atau kelas mana yang dimiliki setiap hunk, yang sangat berguna untuk menafsirkan perbedaannya.
Jawaban:
Ini adalah pengenal diff hunk terpadu. Ini didokumentasikan oleh GNU Diffutils.
sumber
Analisis contoh sederhana
Formatnya pada dasarnya sama dengan
diff -u
unified diff.Misalnya:
Di sini kami menghapus baris 2, 3, 14 dan 15. Output:
@@ -1,6 +1,4 @@
cara:-1,6
berarti bagian dari file pertama ini dimulai pada baris 1 dan menunjukkan total 6 baris. Oleh karena itu, ini menunjukkan baris 1 hingga 6.-
berarti "tua", seperti yang biasa kita sebut sebagaidiff -u old new
.+1,4
berarti bahwa bagian dari file kedua ini dimulai pada baris 1 dan menampilkan total 4 baris. Oleh karena itu, ini menunjukkan baris 1 hingga 4.+
berarti "baru".Kami hanya memiliki 4 baris, bukan 6 karena 2 baris telah dihapus! Yang baru hanya:
@@ -11,6 +9,4 @@
untuk bongkahan kedua adalah analog:pada file lama, kami memiliki 6 baris, dimulai dari baris 11 dari file lama:
pada file baru, kami memiliki 4 baris, dimulai dari baris 9 file baru:
Perhatikan bahwa baris tersebut
11
adalah baris ke-9 dari file baru karena kami telah menghapus 2 baris pada bagian sebelumnya: 2 dan 3.Hunk header
Bergantung pada versi dan konfigurasi git Anda, Anda juga bisa mendapatkan baris kode di sebelah
@@
baris tersebut, misalnya difunc1() {
dalam:Ini juga bisa diperoleh dengan
-p
bendera polosdiff
.Contoh: file lama:
Jika kita menghapus garis
6
, perbedaannya menunjukkan:Perhatikan bahwa ini bukan baris yang benar untuk
func1
: baris yang dilewati1
dan2
.Fitur luar biasa ini sering kali memberi tahu dengan tepat fungsi atau kelas mana yang dimiliki setiap hunk, yang sangat berguna untuk menafsirkan perbedaannya.
Bagaimana algoritma untuk memilih tajuk bekerja persis dibahas di: Dari mana kutipan di tajuk git diff hunk berasal?
sumber
@@ -1,6 +1,4 @@
sebagai "Mulai dari baris 1, jumlah baris yang lama adalah 6 tetapi jumlah baris baru adalah 4"Ini adalah informasi kisaran cowok saat ini yang menyatakan di nomor baris mana tempat ini dimulai dan diakhiri.
Baca http://en.wikipedia.org/wiki/Diff#Unified_format untuk penjelasan mendalam.
sumber