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 código fuente.[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 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.

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

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

fOptionsfOptions
[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 origen.[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 siguientes valores: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 al 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 determinado; archivo no se sincronizó.Nonspecific failure; file was not synchronized.
SCC_I_OPERATIONCANCELEDSCC_I_OPERATIONCANCELED Operación cancelada antes de la finalización.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 archivos sino directorios, y que todos los archivos bajo control de código fuente en los directorios determinados 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 puede combinarse con la SCC_GET_RECURSIVE marca para recuperar todos los archivos en los directorios determinados 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 se debe pasar sin SCC_GET_ALL.SCC_GET_RECURSIVE should never be passed without SCC_GET_ALL. Además, tenga en cuenta que si directorios C:\A y C:\A\B son ambos se pasan en una recursiva obtener, C:\A\B y todos sus subdirectorios realmente se recuperarán dos veces.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 el origen de control del complemento, para asegurarse de que se mantengan duplicados como éste 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 un origen de controlar el complemento 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 llamar a esta función mediante el IDE para recuperar archivos.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 quiere decir que el IDE no muestra un elemento de menú de Get y que el complemento no necesite 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 y SccGetRenaming and SccGet

Situación: un usuario desprotege un archivo, por ejemplo, a.txt y lo modifique.Situation: a user checks out a file, for example, a.txt, and modifies it. Antes de protegerlos a.txt, un segundo usuario cambia el nombre a.txt b.txt en la base de datos de control de código fuente, desprotege b.txt, realiza algunas modificaciones en el archivo y vuelve a proteger 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 quiere que los cambios realizados por el segundo usuario, por lo que el primer usuario cambia el nombre de su versión local del archivo a.txt a 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. No obstante, la memoria caché local que realiza un seguimiento de los números de versión aún considera la primera versión de a.txt se almacena localmente y por lo tanto, 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 se permite cambiar el nombre de un archivo en la base de datos de control de código fuente que está desprotegido.Do not allow renaming a file in the source control database that is currently checked out.

  2. Es el equivalente de "eliminación anterior" seguido 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 de 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 de la a.txt local a b.txt.Rename the local a.txt to b.txt.

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

    4. Porque a.txt no existe en la base de datos de control de código fuente, la memoria caché local de versiones se purga de la información de versión a.txt que falta.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 archivo b.txt desprotección se combina con el contenido del archivo b.txt local.The b.txt file being checked out is merged with the contents of the local b.txt file.

    6. Ahora se puede comprobar el archivo actualizado b.txt.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