Bagaimana cara agar TFS 2010 mendeteksi perubahan yang dilakukan pada file di luar Visual Studio?

118

Saya menggunakan Team Foundation Server 2010 dengan Visual Studio 2010.

Setiap kali saya memodifikasi file di luar Visual Studio, TFS tampaknya tidak mendeteksi perubahan yang dilakukan pada file, dan karenanya tidak menawarkan saya opsi untuk check-in file setelah dimodifikasi.

Bagaimana ini bisa diselesaikan?

asmo
sumber
18
Subversion atau Git (dan mungkin lainnya) membandingkan hash file daripada API untuk check in / out file. Jauh lebih sederhana, dan jauh lebih tidak berisiko!
Steve B
8
Lebih buruk lagi, TFS bahkan tidak menyadari bahwa file yang diubah perlu diperiksa, sehingga Anda sering melupakannya .. sampai kolega Anda memeriksanya dan menyadari kode Anda tidak dapat dikompilasi atau berfungsi. Tidak heran orang mengatakan TFS adalah "VSS dengan steroid" - lebih baik, tetapi masih banyak masalah VSS.
gbjbaanb
Ini VSS pada steroid, dengan cara yang sama steroid menghancurkan tubuh Anda.
Ian Kemp

Jawaban:

48

Jika Anda memiliki koneksi jaringan ke server Anda saat Anda bekerja di luar Visual Studio, mungkin yang terbaik adalah melanjutkan dan memeriksa file sebelum mengeditnya, baik menggunakan klien baris perintah tf, atau menggunakan integrasi shell Windows Explorer yang tersedia di rilis TFS Power Tools . (Selain itu, semakin banyak alat lain yang memiliki integrasi TFS yang membuat ini otomatis, tetapi jika Anda hanya menggunakan notepad, ini masih perlu menjadi langkah manual.)

Tentu saja, ada kalanya Anda bekerja dan Anda tidak memiliki koneksi jaringan yang memungkinkan Anda untuk memeriksa file.

Jika Anda tahu file apa yang telah Anda modifikasi, Anda dapat memeriksanya dari dalam Visual Studio, lalu Anda akan dapat memeriksanya kembali.

Jika Anda tidak mengetahui file apa yang telah Anda edit, Anda dapat mendeteksi perubahan dengan menjalankan tfpt onlineperintah (juga bagian dari rilis Power Tools). Ini akan mencari file yang telah dimodifikasi secara lokal dan memeriksa file-file ini dari server.

Edward Thomson
sumber
Visual Studio tampaknya tidak mendeteksi perubahan pada file hanya dengan memeriksanya. Saya baru saja mencoba memeriksa folder dan isinya muncul dalam perubahan tertunda sebagai pengeditan. Kemudian saya menghapus folder di File Explorer dan menyegarkan perubahan yang tertunda tetapi Visual Studio tidak mengatakan file tersebut dihapus dalam perubahan yang tertunda. Selain itu, file tersebut masih ada di Solution Explorer.
Kyle Delaney
160

TFS memiliki perintah "Rekonsiliasi" untuk ini:

  1. Buka Penjelajah Kontrol Sumber
  2. Klik kanan pada folder dengan perubahan dan pilih Bandingkan
  3. Pilih file yang ingin Anda rekonsiliasi (tekan CTRL+ Auntuk memilih semua file)
  4. Klik pada tombol Rekonsiliasi
  5. Setel opsi dalam dialog Rekonsiliasi Perbedaan Folder . Pastikan File yang tidak memiliki perubahan tertunda diatur ke Check Out
  6. Klik OK
  7. Jika Anda memiliki perubahan lokal, dialog Check Out akan ditampilkan. Setel jenis Kunci yang diinginkan
  8. Klik Check Out

Rekonsiliasi Perbedaan Folder

Lihat juga: Merekonsiliasi perbedaan antar folder

mhu
sumber
13
Ini adalah jawaban terbaik karena tidak memerlukan baris perintah atau 'Urungkan perubahan tertunda' yang berisiko.
NickH
4
Menyelamatkan hariku! Saya mengikuti langkah Anda dengan tepat dan itu bekerja persis seperti yang diharapkan. :-)
Gilad Barner
4
Bekerja seperti yang dijelaskan. Harus menjadi jawaban terbaik.
Nicolas
Sayangnya, ketika melakukan ini di seluruh proyek saya, saya mendapatkan kesalahan Jalur yang ditentukan, nama file, atau keduanya terlalu panjang. Nama yang sepenuhnya memenuhi syarat harus kurang dari 260 karakter, dan nama direktori harus kurang dari 248 karakter. Memilih folder individual bukanlah pilihan bagi saya, karena saya tidak dapat mengingat semua direktori file yang telah saya ubah. Ada ide?
kraftwer1
2
Bekerja dengan sempurna di VS 2015 update 3, terima kasih banyak. Harus menjadi jawaban terbaik, tidak ada perintah rumit untuk membuatnya bekerja
Nicolas Leucci
35

Ini berhasil untuk saya, menggunakan TFS Power Tools:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(di mana nama direktori adalah jalur ke direktori yang akan diperbarui, jika tidak maka akan mendeteksi perubahan di seluruh repositori TFS Anda)

Jika Anda ingin tahu apa yang akan dilakukannya tanpa benar-benar melakukan perubahan apa pun, Anda dapat memaksanya melakukan uji coba dengan menambahkan /previewsakelar.

Adam Batkin
sumber
Terima kasih atas tipnya @Adam Batkin. Bekerja seperti pesona dan saya sekarang sudah siap! +1
iOnline247
9
Hati-hati, baris perintah ini juga akan menyertakan file yang tidak diinginkan: * .user, BIN \, obj, dll ...
Steve B
1
Cheers, saya sedang mencari cara baris perintah sehingga saya dapat mengotomatiskan pembaruan TFS perusahaan dari repo Git lokal saya!
Mark K Cowan
2
@SteveB ada /exclude:fld_name/*,filenametombol yang dapat digunakan untuk mengecualikan file yang tidak diinginkan .. yang membuat saya banyak
Kresimir Pendic
1
Saya menjalankan seperti ini tfpt online /deletes /noprompt /recursive directory-namedan mendapatkan ribuan file untuk `diubah`, jadi harus diurungkan. Tapi saya tidak pernah menyentuh ini, hanya menghapus folder.
Dzmitry Lahoda
16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

Saya menguji solusi ini di cabang dan itu sangat membantu saya. Namun hanya file baru dan folder baru yang harus dikerjakan secara manual.

Saya merekomendasikan untuk membuat cabang sebelum operasi. Ini mengisolasi Anda saat operasi.

Catatan: Teknik ini juga melakukan pembersihan file yang identik yang selalu ditandai TFS sebagai diubah.

hugbe8
sumber
3
Ini harus benar-benar menjadi komentar di posting alga , bukan jawaban baru. Bagaimanapun, saya tetap menyarankan untuk tidak melakukan ini karena alasan yang sama dengan yang saya sarankan untuk tidak dilakukan ketika alga menyarankannya di atas.
Edward Thomson
Benar-benar brilian! Persis apa yang saya cari (setelah perusahaan kami memindahkan server TFS kami, dan TFS / VS2010 bingung olehnya). Sekarang, saya baru saja memeriksa file yang telah saya edit. Terima kasih!
Mike Gledhill
Ini berfungsi, tetapi MS harus menyediakan cara yang lebih baik untuk melakukan ini. Baris perintah dan peretasan seharusnya tidak diperlukan pada produk yang bagus (terutama jika ini disematkan ke VS). SVN dan Mercurial melakukan ini untuk bersenang-senang ...
user2173353
Alih-alih poin 4, Anda dapat menggunakan tfpt uu stackoverflow.com/a/544285/10245
Tim Abell
Ini hanya membatalkan apa yang Anda lakukan. Itu tidak membuat Visual Studio menyadari apa yang Anda lakukan.
Kyle Delaney
7

Coba ini. Ini semacam solusi, tetapi berhasil:

  1. membuat perubahan di luar Visual Studio
  2. buka Visual Studio dan buka Source Control Explorer
  3. klik kanan pada folder> "Check Out for Edit" > "Check Out"
  4. klik kanan pada folder yang sama> "Urungkan Perubahan yang Menunggu Keputusan ..." > "Urungkan perubahan" > " Tidak untuk Semua "

Itu dia. Perubahannya terlihat sekarang.

Alexander G
sumber
3
Saya benar-benar merekomendasikan untuk tidak melakukannya - kekhawatiran terbesar saya adalah bahwa saya akan menyalahkan yang satu ini dan secara tidak sengaja membatalkan semua perubahan saya yang sah. Selain itu, Anda memeriksa semua file yang, tergantung pada konfigurasi klien dan server Anda, mungkin akan mengunci beberapa atau mungkin semua file dan dapat melakukan pemeriksaan terbaru yang tentu saja bisa mengganggu.
Edward Thomson
1
Ini hanya membatalkan apa yang Anda lakukan. Itu tidak membuat Visual Studio menyadari apa yang Anda lakukan.
Kyle Delaney
Dan jika Anda membuat atau menambahkan item baru, di sesi itu: Gone baby, gone!
Christian
4

Ada juga solusi lain untuk membuat TFS mengetahui file yang telah berubah di luar Visual Studio:

  1. Buka solusi secara offline
  2. Di Solution Explorer pilih file solusi lalu tekan tombol Go Online ( Ikon Tombol GoOnline)

TFS akan secara otomatis memindai solusi untuk perubahan setelah ini.

Langkah pertama dapat dicapai dengan berbagai cara. Berikut ini beberapa:

  • Gunakan Ekstensi GoOffline - sangat sederhana dan efektif.
  • Jika Anda dimintai kredensial TFS saat membuka solusi (tanpa autentikasi domain otomatis), jangan masukkan kredensial. Solusinya akan terbuka secara offline dan Anda akan login setelah menekan tombol Go Online
  • (solusi ekstrim) Lepaskan kabel jaringan Anda; Buka solusinya; Hubungkan kabel jaringan.
Cristian Lupascu
sumber
3

Visual Sourcesafe juga berfungsi seperti ini dan cara saya membuat VSS atau TFS mengetahui perubahan tersebut adalah dengan memeriksa file sekali di dalam Visual Studio.

CheckRaise
sumber
1

Open Source Control dan buka folder TFS Anda. Klik kanan pada folder dan pilih 'Bandingkan'.

Perhatikan bahwa file yang Anda edit muncul dengan tanda merah.

Menurut saya ini lebih baik daripada tfpt onlineyang juga memberi Anda file yang tidak hanya dapat dibaca dan tidak diedit.

pengguna2572682
sumber
1

Saya mengalami masalah ini di masa lalu, ketika Internet saya mati dan saya bekerja offline, dan sebagian besar perubahan saya tidak muncul di Team Explorer.

Mengikuti langkah berikut: Pertama, Dalam solusi explorer, pilih folder yang Anda ingin kembali mendamaikan (bagi saya, itu adalah seluruh folder solusi saya), dan pilih Bandingkan ... masukkan deskripsi gambar di sini Klik di Modify Filter , dan dalam saringan text kotak, Anda bisa mengetik:

*.cs;!obj\;!bin\;!packages\;

Dalam contoh ini, itu hanya akan menyertakan dalam pencarian file C # dan mengecualikan di folder: bin, obj dan paket.

Perhatikan kolom Pending Change memiliki info apakah file tersebut ditandai sebagai edit, tambahkan, dll ... atau tidak ada ...

  • Untuk menandai sebagai edit (ketika item lokal memiliki item server yang cocok), pilih file dan pilih Check out for Edit ...
  • Untuk menandai sebagai tambah (ketika item lokal tidak memiliki item server apa pun), pilih file dan pilih Tambah File

Akhirnya, saya tidak yakin mengapa proyek tidak terdaftar di sini (setelah saya menghapus filter * .cs, masih tidak muncul), jadi buat kembali solusi untuk memastikan proyek juga diperbarui

+ Dalam solusinya, klik tombol hubungkan (jika muncul) yang bertuliskan Go Online .

Jaider
sumber
0

Saya menemukan bahwa di Visual Studio 2015, dengan proyek terbuka, Visual Studio menemukan sendiri bahwa file telah dimodifikasi secara eksternal, dan secara otomatis memeriksanya tanpa saya harus melakukan apa pun. Memeriksa proyek dengan cara biasa menyimpan modifikasi eksternal.

Graham Laight
sumber
0

Dalam kasus saya, yang berikut berhasil (setidaknya satu kali saya mencobanya):

  1. Buka panel Perubahan Tertunda
  2. Pilih Opsi Tampilan di bawah Perubahan yang Disertakan atau Dikecualikan.
  3. Beralih antara Tampilkan Semua dan Tampilkan Perubahan Solusi
  4. Beralih kembali jika diinginkan

Segarkan Perubahan TFS

Mengubah Opsi Tampilan tampaknya memaksa penyegaran file yang dimodifikasi.

sombong
sumber