Saya terkadang menggunakan fitur 'Rekonsiliasi Pekerjaan Offline ...' yang ditemukan di P4V IDE Perforce untuk menyinkronkan semua file yang sedang saya kerjakan saat terputus dari depot P4. Ini meluncurkan jendela lain yang melakukan 'Folder Diff'.
Saya memiliki file yang tidak ingin saya periksa ke kontrol sumber (seperti yang ditemukan di folder bin seperti DLL, keluaran yang dihasilkan kode, dll.) Apakah ada cara untuk memfilter file / folder tersebut agar tidak muncul sebagai "baru" yang mungkin ditambahkan. Mereka cenderung mengacaukan daftar file yang sebenarnya saya minati. Apakah P4 setara dengan fitur 'abaikan file' Subversion?
version-control
perforce
ignore
sinar
sumber
sumber
Jawaban:
Mulai versi 2012.1, Perforce mendukung
P4IGNORE
variabel lingkungan. Saya memperbarui jawaban saya untuk pertanyaan ini tentang mengabaikan direktori dengan penjelasan tentang cara kerjanya. Kemudian saya memperhatikan jawaban ini, yang saya kira sekarang tidak berguna.Dengan asumsi Anda memiliki klien bernama "CLIENT", direktori bernama "foo" (terletak di root proyek Anda), dan Anda ingin mengabaikan semua file .dll di pohon direktori itu, Anda dapat menambahkan baris berikut ke tampilan ruang kerja Anda untuk menyelesaikannya ini:
Baris pertama menghapusnya dari direktori "foo" dan baris kedua menghapusnya dari semua sub direktori. Sekarang, saat Anda 'Rekonsiliasi Pekerjaan Offline ...', semua file .dll akan dipindahkan ke folder "File yang Dikecualikan" di bagian bawah tampilan folder diff. Mereka akan menyimpang dari Anda, tetapi masih dapat melihat dan memanipulasinya jika Anda benar-benar perlu.
Anda juga dapat melakukannya dengan cara lain, yang akan mengurangi folder "File yang Dikecualikan" menjadi hanya satu, tetapi Anda tidak akan dapat memanipulasi file apa pun di dalamnya karena jalurnya akan rusak (tetapi jika Anda hanya menginginkannya cara Anda, tidak masalah).
sumber
Reconcile Offline Work
dialog. Ini berfungsi jika Anda membukanya di dalamAdvanced Reconcile...
tetapi ini tidak berguna karena dalam 99,9% waktu Anda tidak perlu atau ingin menggunakan dialog lanjutan.Ya tapi.
Perforce versi 2012.1 menambahkan fitur yang dikenal sebagai p4ignore , terinspirasi oleh Git. Namun pengembang Perforce membuat perubahan pada perilaku, tanpa pembenaran, yang kebetulan membuat fitur tersebut menjadi kurang berguna.
Sementara Git mengambil aturan dari semua
.gitignore
file, Perforce tidak tahu ke mana harus mencari sampai Anda menentukan nama file dalam variabel lingkunganP4IGNORE
. Kebebasan ini adalah kutukan. Anda tidak dapat meretas dua repositori yang menggunakan nama berbeda untuk file pengabaiannya.Selain itu, fitur abaikan Perforce tidak berfungsi di luar kotak. Anda dapat menyiapkannya dengan cukup mudah untuk diri Anda sendiri, tetapi orang lain tidak mendapatkan keuntungan kecuali mereka secara eksplisit ikut serta. Seorang kontributor yang belum mungkin secara tidak sengaja mengkomit file yang tidak diinginkan (misalnya
bin
folder yang dibuat oleh skrip build).Fitur abaikan Git sangat bagus karena berfungsi di luar kotak. Jika
.gitignore
file ditambahkan ke repositori ( semua orang melakukan ini ), mereka akan bekerja di luar kotak untuk semua orang. Tidak ada orang yang secara tidak sengaja mempublikasikan kunci pribadinya.Anehnya, dokumen Perforce menampilkan '.p4ignore' sebagai contoh aturan abaikan, yang terbalik! Jika aturan berguna, mereka harus dibagikan sebagai bagian dari repositori.
Perforce masih bisa memanfaatkan fitur tersebut. Pilih konvensi untuk nama file, misalnya
p4ignore.txt
, sehingga fitur tersebut berfungsi dengan baik. JatuhkanP4IGNORE
variabel lingkungan, itu kontraproduktif. Edit dokumen, untuk mendorong pengembang berbagi aturan yang berguna. Izinkan pengguna menulis aturan pribadi dalam file di folder rumah mereka, seperti yang dilakukan Git .Jika Anda mengenal seseorang di Perforce, harap kirimkan email ini kepada mereka.
sumber
Ini berfungsi mulai Perforce 2013.1, mekanisme P4IGNORE baru pertama kali ditambahkan pada rilis 2012.1, dijelaskan di blog Perforce di sini:
Seperti yang dijelaskan saat ini, Anda menyetel variabel lingkungan "P4IGNORE" ke nama file yang berisi daftar file yang akan diabaikan.
Jadi, Anda dapat memeriksanya untuk melihat seberapa Anda menyukainya.
sumber
Jika Anda menginginkan solusi yang akan diterapkan ke semua ruang kerja tanpa perlu disalin, Anda (atau sysadmin Anda) dapat menolak pengiriman jenis file tersebut dengan menggunakan baris seperti di bawah ini pada tabel proteksi p4:
Saya ingat melakukan ini sebelumnya, tetapi saya tidak memiliki izin yang diperlukan untuk mengujinya di sini. Lihat panduan Sysadmin Perforce dan cobalah
sumber
Perforce Streams membuat pengabaian file menjadi jauh lebih mudah, mulai dari versi 2011.1. Menurut dokumentasi, Anda dapat mengabaikan ekstensi tertentu atau jalur tertentu di direktori Anda.
Dari
p4 help stream
Ini pada dasarnya melakukan apa yang ditentukan oleh jawaban @ raven, tetapi dilakukan lebih mudah dengan aliran, karena secara otomatis menyebar ke setiap ruang kerja menggunakan aliran itu. Ini juga berlaku untuk aliran apa pun yang mewarisi dari aliran yang Anda tentukan jenis abaikannya.
Anda dapat mengedit aliran melalui
p4 stream //stream_depot/stream_name
atau mengklik kanan aliran di tampilan aliran p4v.Dan seperti yang dicatat oleh @svec, kemampuan untuk menentukan file abaikan per ruang kerja akan segera hadir, dan sebenarnya ada dalam P4 2012.1 beta.
sumber
Saran Will untuk menggunakan
.p4ignore
tampaknya hanya berfungsi dengan plugin WebSphere Studio (P4WSAD). Saya baru saja mencobanya di kotak windows lokal saya dan semua file dan direktori yang saya daftarkan tidak diabaikan.Saran Raven untuk mengubah spesifikasi klien Anda adalah cara yang benar menurut Perforce. Pengaturan yang tepat dari kode / data / file yang dapat dieksekusi dan file keluaran yang dihasilkan akan membuat proses mengecualikan file agar tidak diperiksa lebih mudah.
Sebagai pendekatan yang lebih kejam, Anda selalu dapat menulis pemicu pengiriman yang akan menolak pengiriman daftar perubahan jika daftar tersebut berisi file atau file tertentu dengan ekstensi tertentu, dll.
sumber
JAWABAN SEJARAH - tidak lagi benar. Pada saat ini ditulis aslinya itu benar;
Anda tidak dapat menulis dan memeriksa file yang akan digunakan server untuk membuat aturan pengabaian; abaikan pola file glob atau regexp umum secara paksa.
Jawaban lain memiliki konfigurasi server global yang bersifat global (dan bukan per folder). Jawaban lain menunjukkan hal-hal yang mungkin berhasil untuk Anda, jika Anda menginginkan satu baris dalam tampilan Anda per folder kali jumlah ekstensi yang ingin Anda abaikan dalam satu folder itu, atau yang menyediakan kemampuan ini hanya di plugin WebSphere Studio, atau menyediakan kemampuan untuk server administrator, tetapi tidak tersedia untuk pengguna.
Singkatnya, menurut saya Perforce sangat lemah di area ini. Meskipun saya menghargai bahwa mereka yang menggunakan Eclipse Plugin dapat menggunakan
.p4ignore
, dan saya pikir itu hebat, itu membuat kita yang tidak menggunakannya, tidak tahu apa-apa.UPDATE: Lihat jawaban yang diterima untuk kemampuan P4IGNORE baru yang ditambahkan pertengahan 2012.
sumber
Saya merasa paling mudah untuk merekonsiliasi pekerjaan offline menggunakan skrip BASH seperti ini:
Saya mengadaptasi ini dari artikel Pangkalan Pengetahuan Perforce .
sumber
Saya mencari solusi seperti .p4ignore juga (dan bukan yang terkait dengan IDE tertentu). Sejauh ini, hal terdekat yang saya temukan adalah p4delta. Sepertinya itu akan melakukan apa yang diminta poster asli, meskipun melalui lapisan tipuan lain.
http://p4delta.sourceforge.net
Sayangnya, meskipun ini tampaknya menghasilkan daftar file yang tepat, saya tidak dapat mengaktifkan "p4delta --execute" ("Tidak dapat mengubah string yang dibekukan") dan proyek belum diperbarui tahun ini. Mungkin orang lain akan lebih beruntung.
sumber
Jika Anda menggunakan plugin Eclipse Perforce, dokumentasi plugin mencantumkan beberapa cara untuk mengabaikan file.
sumber