Eclipse dan baris baru Windows

182

Saya harus memindahkan ruang kerja Eclipse dari Linux ke Windows saat desktop saya mogok. Seminggu kemudian saya salin kembali ke Linux, kode dengan senang hati, komit ke CVS. Dan sayangnya, baris baru windows telah mencemari banyak file, jadi CVS berbeda membuang seluruh file, bahkan ketika saya mengubah satu atau dua baris!

Saya bisa membuat naskah, tetapi saya bertanya-tanya apakah itu akan mengacaukan file proyek Eclipse saya.

Vasu
sumber
1
Untuk mengonversi akhiran baris untuk beberapa / semua file dalam suatu proyek hanya dengan beberapa klik: stackoverflow.com/a/7019737/1364747
Teddy

Jawaban:

358

Seperti yang disebutkan di sini dan di sini :

Atur penyandian file ke UTF-8dan akhir baris untuk file baru ke Unix, sehingga file teks disimpan dalam format yang tidak spesifik untuk OS Windows dan paling mudah dibagikan di desktop pengembang yang heterogen:

  • Menavigasi ke preferensi Workspace (Umum: Workspace)
  • Ubah Encoding File Teks ke UTF-8
  • Ubah Pembatas Baris File Teks Baru ke Lainnya dan pilih Unix dari daftar pilih

teks alternatif

  • Catatan: untuk mengonversi ujung baris file yang ada, buka file di Eclipse dan pilih File : Convert Line Delimiters to : Unix

Tip : Anda dapat dengan mudah mengkonversi file yang sudah ada dengan memilih lalu di Package Explorer, dan kemudian pergi ke entri menuFile : Convert Line Delimiters to : Unix

VONC
sumber
2
Itulah tepatnya yang saya cari! Saya sudah mengubahnya untuk file baru, tetapi opsi untuk mengkonversi - merindukan mata saya. Terima kasih VONC!
Vasu
@Vasu: sama-sama :). Tampilan Outline dan Package Explorer berisi beberapa fitur untuk elemen multi-dipilih yang sering diabaikan.
VonC
Langgan yang bagus. Mencari ini sendiri melalui dialog preferensi labirin mengerikan Eclipse membuatku gila.
Cerin
39
Jika Anda memilih seluruh proyek dalam paket explorer, Anda dapat menggunakan File : Convert Line Delimiters to : Unixperintah untuk "memperbaiki" semua file dalam proyek sekaligus.
Tal Weiss
11

Saya memiliki file yang sama, gerhana tercemar bahkan dengan satu perubahan baris. Solusi: Pengaturan git Eclipse -> Tambah Entri: Kunci: core.autocrlf Nilai: true

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

pengguna988282
sumber
Meskipun ini adalah solusi OK untuk sebagian besar kasus, ini dapat menggigit Anda - misalnya ketika Anda menghitung checksum dari file sumber. Ini kemudian akan berbeda dari platform ke platform.
zb226
8

Ada utilitas bash yang berguna - dos2unix- yang merupakan konverter format file teks DOS / MAC ke UNIX, yang jika belum diinstal pada distro Anda, harus dapat diinstal dengan mudah melalui manajer paket. halaman manual dos2unix

Ben Hayden
sumber
Saya berencana untuk menulis naskah untuk melakukan ini secara rekursif di ruang kerja gerhana saya. Hanya khawatir merusak file proyek internal gerhana. Terima kasih atas saran Anda!
Vasu
7

Selain solusi Eclipse dan alat yang disebutkan dalam jawaban lain , pertimbangkan flip . Ini dapat 'membalik' di antara garis-garis normal dan Windows, dan melakukan hal-hal baik seperti mempertahankan stempel waktu file dan statistik lainnya.

Anda dapat menggunakannya seperti ini untuk menyelesaikan masalah Anda:

find . -type f -not -path './.git/*' -exec flip -u {} \;

(Saya memasukkan klausa untuk mengabaikan direktori .git Anda, jika Anda menggunakan git, tetapi karena flip mengabaikan file biner secara default, Anda mungkin tidak memerlukan ini.)

Michael Scheper
sumber
Sekedar catatan ... perintah ini untuk pengguna Linux, bukan pengguna Windows. Windows findtidak berfungsi seperti ini.
Brad
@Rad benar. Namun, ada port flip Cygwin: github.com/jaalto/cygwin-package--flip
Michael Scheper
3

Anda bisa mencobanya. Masalahnya adalah bahwa Windows memasukkan carriage return serta umpan baris ketika diberi baris baru. Sistem Unix hanya memasukkan umpan baris. Jadi karakter carriage return tambahan bisa menjadi alasan mengapa gerhana Anda mengacaukan baris baru.

Raih satu atau dua file dari proyek Anda dan konversikan. Anda bisa menggunakan Notepad ++ untuk melakukannya. Cukup buka file, pergi ke Format-> Convert to Unix (ketika Anda menggunakan windows).

Di Linux coba ini di baris perintah:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
Ham Vocke
sumber
Saya memiliki sekitar 10 ribu file! Jadi harus mengotomatiskannya entah bagaimana. Terima kasih atas sarannya!
Vasu
Beberapa kesalahan ketik pada CLI Anda: sed -i 's/$`echo \\\r`//' yourfile.javadan untuk mengotomatiskannyafind . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
pdem
3

Untuk secara rekursif menghapus carriage return ( \r) dari file CVS / * di semua direktori anak, jalankan yang berikut ini di shell unix:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
Gabe
sumber