SccGet (función)SccGet function

Esta función recupera una copia de uno o más archivos para ver y compilar, pero no para su edición.This function retrieves a copy of one or more files for viewing and compiling but not for editing. En la mayoría de los sistemas, los archivos se etiquetan como de solo lectura.In most systems, the files are tagged as read-only.

SintaxisSyntax

SCCRTN SccGet(  
   LPVOID    pvContext,  
   HWND      hWnd,  
   LONG      nFiles,  
   LPCSTR*   lpFileNames,  
   LONG      fOptions,  
   LPCMDOPTS pvOptions  
);  

ParámetrosParameters

pvContextpvContext
[in] La estructura de contexto del complemento de control de origen.[in] The context structure of the source control plug-in.

hWndhWnd
[in] Identificador de la ventana del IDE que puede usar el complemento de control de código fuente como un elemento primario para los cuadros de diálogo que proporciona.[in] A handle to the IDE window that the source control plug-in can use as a parent for any dialog boxes that it provides.

nnFiles
[in] Número de archivos especificados en el lpFileNames matriz.[in] Number of files specified in the lpFileNames array.

lpFileNameslpFileNames
[in] Matriz de nombres completos de los archivos que va a recuperar.[in] Array of fully qualified names of files to be retrieved.

OpcionesfOptions
[in] Indicadores de comandos (SCC_GET_ALL, SCC_GET_RECURSIVE).[in] Command flags (SCC_GET_ALL, SCC_GET_RECURSIVE).

pvOptionspvOptions
[in] Opciones de específicas del complemento de control de código fuente.[in] Source control plug-in-specific options.

Valor devueltoReturn value

La implementación de complemento de control de origen de esta función debe devolver uno de los valores siguientes:The source control plug-in implementation of this function is expected to return one of the following values:

ValorValue DescripciónDescription
SCC_OKSCC_OK Éxito de la operación get.Success of get operation.
SCC_E_FILENOTCONTROLLEDSCC_E_FILENOTCONTROLLED El archivo no está bajo control de código fuente.The file is not under source control.
SCC_E_OPNOTSUPPORTEDSCC_E_OPNOTSUPPORTED El sistema de control de código fuente no admite esta operación.The source control system does not support this operation.
SCC_E_FILEISCHECKEDOUTSCC_E_FILEISCHECKEDOUT No se puede obtener el archivo que el usuario ha desprotegido actualmente.Cannot get the file that the user currently has checked out.
SCC_E_ACCESSFAILURESCC_E_ACCESSFAILURE Hubo un problema al obtener acceso el sistema de control de código fuente, probablemente debido a problemas de red o de contención.There was a problem accessing the source control system, probably due to network or contention issues. Se recomienda un reintento.A retry is recommended.
SCC_E_NOSPECIFIEDVERSIONSCC_E_NOSPECIFIEDVERSION Especificar una versión no válida o la fecha y hora.Specified an invalid version or date/time.
SCC_E_NONSPECIFICERRORSCC_E_NONSPECIFICERROR Error no específico; archivo no se sincronizó.Nonspecific failure; file was not synchronized.
SCC_I_OPERATIONCANCELEDSCC_I_OPERATIONCANCELED Operación cancelada antes de completarse.Operation cancelled before completion.
SCC_E_NOTAUTHORIZEDSCC_E_NOTAUTHORIZED El usuario no está autorizado para realizar esta operación.The user is not authorized to perform this operation.

ComentariosRemarks

Esta función se invoca con un recuento y una matriz de nombres de los archivos que se van a recuperar.This function is called with a count and an array of names of the files to be retrieved. Si el IDE pasa la marca SCC_GET_ALL, esto significa que los elementos de lpFileNames no son los archivos, pero los directorios, y que todos los archivos bajo control de código fuente en los directorios dados se van a recuperar.If the IDE passes the flag SCC_GET_ALL, this means that the items in lpFileNames are not files but directories, and that all files under source control in the given directories are to be retrieved.

El SCC_GET_ALL marca se puede combinar con el SCC_GET_RECURSIVE marca para recuperar todos los archivos en los directorios dados y también todos los subdirectorios.The SCC_GET_ALL flag can be combined with the SCC_GET_RECURSIVE flag to retrieve all files in the given directories and all subdirectories as well.

Nota

SCC_GET_RECURSIVE nunca debe pasarse sin SCC_GET_ALL.SCC_GET_RECURSIVE should never be passed without SCC_GET_ALL. Además, tenga en cuenta que si los directorios C:\A y C:\A\B se pasan en una operación get recursiva, C:\A\B y dos veces en realidad se recuperarán todos sus subdirectorios.Also, note that if directories C:\A and C:\A\B are both passed on a recursive get, C:\A\B and all its subdirectories will actually be retrieved twice. Es responsabilidad del IDE, y no en el origen de control del complemento, para asegurarse de que se mantengan los duplicados, como esto fuera de la matriz.It is the IDE's responsibility—and not the source control plug-in's—to make sure that duplicates such as this are kept out of the array.

Por último, incluso si el complemento de control de un origen especificado el SCC_CAP_GET_NOUI marca en la inicialización, lo que indica que no tiene una interfaz de usuario para un comando Get, todavía puede llamarse mediante el IDE para recuperar los archivos de esta función.Finally, even if a source control plug-in specified the SCC_CAP_GET_NOUI flag on initialization, indicating that it does not have a user interface for a Get command, this function may still be called by the IDE to retrieve files. La marca simplemente significa que el IDE no muestra un elemento de menú de Get y que el complemento no es lo esperado proporcionar cualquier interfaz de usuario.The flag simply means that the IDE does not display a Get menu item and that the plug-in is not expected to provide any UI.

Cambiar el nombre de archivos y SccGetRename files and SccGet

Situación: un usuario desprotege un archivo, por ejemplo, a.txty lo modifica.Situation: a user checks out a file, for example, a.txt, and modifies it. Antes de a.txt puede comprobarse en, cambia el nombre de un segundo usuario a.txt a b.txt en la base de datos de control de código fuente, desprotege b.txt, hace que sea algunas modificaciones en el archivo y protege el archivo.Before a.txt can be checked in, a second user renames a.txt to b.txt in the source control database, checks out b.txt, makes some modifications to the file, and checks the file in. El primer usuario desea que los cambios realizados por el segundo usuario, por lo que el primer usuario cambia el nombre de su versión local de a.txt archivo b.txt y realiza una operación get en el archivo.The first user wants the changes made by the second user so the first user renames their local version of a.txt file to b.txt and does a get on the file. Sin embargo, la memoria caché local que realiza un seguimiento de los números de versión aún piensa que la primera versión de a.txt se almacena localmente, por lo que el control de código fuente no puede resolver las diferencias.However, the local cache that keeps track of version numbers still thinks the first version of a.txt is stored locally and so source control cannot resolve the differences.

Hay dos maneras de resolver esta situación donde la memoria caché local de versiones del control de código fuente no está sincronizada con la base de datos de control de código fuente:There are two ways to resolve this situation where the local cache of source control versions becomes out of sync with the source control database:

  1. No permiten cambiar el nombre de un archivo en la base de datos de control de código fuente está desprotegido actualmente.Do not allow renaming a file in the source control database that is currently checked out.

  2. Es el equivalente de "eliminación antiguo" seguida de "Agregar nuevo".Do the equivalent of "delete old" followed by "add new". El algoritmo siguiente es una manera de lograr esto.The following algorithm is one way to accomplish this.

    1. Llame a la SccQueryChanges función para obtener información sobre el cambio de nombre a.txt a b.txt en la base de datos de control de código fuente.Call the SccQueryChanges function to learn about the renaming of a.txt to b.txt in the source control database.

    2. Cambiar el nombre local a.txt a b.txt.Rename the local a.txt to b.txt.

    3. Llame a la SccGet función para ambos a.txt y b.txt.Call the SccGet function for both a.txt and b.txt.

    4. Dado que a.txt no existe en la base de datos de control de código fuente, se purga la caché de la versión local del campo que falta a.txt información de versión.Because a.txt does not exist in the source control database, the local version cache is purged of the missing a.txt version information.

    5. El b.txt va a desproteger el archivo se combina con el contenido de la variable local b.txt archivo.The b.txt file being checked out is merged with the contents of the local b.txt file.

    6. La actualización b.txt ahora se puede comprobar el archivo.The updated b.txt file can now be checked in.

Vea tambiénSee also

Funciones de API de complemento de control de código fuente Source control plug-in API functions
Marcadores de bits utilizados por comandos específicosBitflags used by specific commands