Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu işlev, görüntülemek ve derlemek için bir veya daha fazla dosya kopyasını alır ancak düzenlemek için alamaz. Çoğu sistemde dosyalar salt okunur olarak etiketlenir.
Sözdizimi
SCCRTN SccGet(
LPVOID pvContext,
HWND hWnd,
LONG nFiles,
LPCSTR* lpFileNames,
LONG fOptions,
LPCMDOPTS pvOptions
);
Parametreler
pvContext
[in] Kaynak denetimi eklentisinin bağlam yapısı.
Hwnd
[in] Kaynak denetimi eklentisinin sağladığı iletişim kutuları için üst öğe olarak kullanabileceği IDE penceresinin tanıtıcısı.
nFiles
[in] Dizide lpFileNames belirtilen dosya sayısı.
lpFileNames
[in] Alınacak dosyaların tam adları dizisi.
fOptions
[in] Komut bayrakları (SCC_GET_ALL, SCC_GET_RECURSIVE).
pvOptions
[in] Kaynak denetimi eklentisine özgü seçenekler.
Dönüş değeri
Bu işlevin kaynak denetimi eklentisinin aşağıdaki değerlerden birini döndürmesi beklenir:
| Value | Açıklama |
|---|---|
| SCC_OK | Alma işleminin başarısı. |
| SCC_E_FILENOTCONTROLLED | Dosya kaynak denetimi altında değil. |
| SCC_E_OPNOTSUPPORTED | Kaynak denetim sistemi bu işlemi desteklemiyor. |
| SCC_E_FILEISCHECKEDOUT | Kullanıcının şu anda kullanıma aldığı dosya alınamıyor. |
| SCC_E_ACCESSFAILURE | Büyük olasılıkla ağ veya çekişme sorunlarından dolayı kaynak denetim sistemine erişilirken bir sorun oluştu. Yeniden deneme önerilir. |
| SCC_E_NOSPECIFIEDVERSION | Geçersiz bir sürüm veya tarih/saat belirtildi. |
| SCC_E_NONSPECIFICERROR | Özel olmayan hata; dosyası eşitlenmedi. |
| SCC_I_OPERATIONCANCELED | İşlem tamamlanmadan önce iptal edildi. |
| SCC_E_NOTAUTHORIZED | Kullanıcının bu işlemi gerçekleştirme yetkisi yok. |
Açıklamalar
Bu işlev bir sayı ve alınacak dosyaların ad dizisiyle çağrılır. IDE bayrağını SCC_GET_ALLgeçirirse, içindeki öğelerin lpFileNames dosya değil dizinler olduğu ve belirtilen dizinlerdeki kaynak denetimi altındaki tüm dosyaların alınacağı anlamına gelir.
Bayrak, SCC_GET_ALL verilen dizinlerdeki ve tüm alt dizinlerdeki tüm dosyaları almak için bayrağıyla SCC_GET_RECURSIVE birleştirilebilir.
Not
SCC_GET_RECURSIVE olmadan SCC_GET_ALLhiçbir zaman geçirilmemelidir. Ayrıca, C:\A ve C:\A\B dizinlerinin her ikisi de özyinelemeli almada geçirilirse, C:\A\B ve tüm alt dizinlerinin aslında iki kez alınacağını unutmayın. Bunun gibi yinelemelerin dizi dışında tutulduğundan emin olmak, kaynak denetimi eklentisinin değil IDE'nin sorumluluğundadır.
Son olarak, bir kaynak denetimi eklentisi başlatmada bayrağı belirtmiş SCC_CAP_GET_NOUI olsa bile, Get komutu için kullanıcı arabirimi olmadığını belirtse bile, bu işlev dosyaları almak için IDE tarafından çağrılmaya devam edebilir. Bayrağı, IDE'nin Bir Al menü öğesi görüntülemediği ve eklentinin herhangi bir kullanıcı arabirimi sağlamasının beklenmediği anlamına gelir.
Dosyaları ve SccGet'i yeniden adlandırma
Durum: Kullanıcı bir dosyayı (örneğin, a.txt) kullanıma alır ve değiştirir. A.txt'nin iade edilebilmesi için, ikinci bir kullanıcı kaynak denetim veritabanında a.txt dosyasını b.txt olarak yeniden adlandırır, b.txt dosyasını kullanıma alır, dosyada bazı değişiklikler yapar ve dosyayı iade eder. İlk kullanıcı, ikinci kullanıcı tarafından yapılan değişiklikleri ister, böylece ilk kullanıcı a.txt dosyasının yerel sürümünü b.txt olarak yeniden adlandırır ve dosyaya bir alma yapar. Ancak, sürüm numaralarını takip eden yerel önbellek hala a.txt dosyasının ilk sürümünün yerel olarak depolandığını ve bu nedenle kaynak denetiminin farklılıkları çözemediğini düşünür.
Kaynak denetimi sürümlerinin yerel önbelleğinin kaynak denetim veritabanıyla eşitlenmediği bu durumu çözmenin iki yolu vardır:
Şu anda kullanıma alınmış olan kaynak denetim veritabanında bir dosyanın yeniden adlandırılmasına izin verme.
"Eskiyi sil" ve ardından "yeni ekle" ifadesinin eşdeğerini yapın. Aşağıdaki algoritma, bunu gerçekleştirmenin bir yoludur.
Kaynak denetim veritabanında a.txt dosyasının b.txt olarak yeniden adlandırılması hakkında bilgi edinmek için SccQueryChanges işlevini çağırın.
Yerel a.txt dosyasını b.txt olarak yeniden adlandırın.
SccGethem a.txt hem de b.txt için işlevini çağırın.Kaynak denetimi veritabanında a.txt olmadığından, yerel sürüm önbelleği eksik a.txt sürüm bilgilerinden temizlenir.
Kullanıma alınan b.txt dosyası, yerel b.txt dosyasının içeriğiyle birleştirilir.
Güncelleştirilmiş b.txt dosyası artık iade edilebilir.