Função SccGet
Esta função recupera uma cópia de um ou mais arquivos para a exibição e a compilação, mas não para edição. Na maioria dos sistemas, os arquivos são marcados como somente leitura.
SCCRTN SccGet(
LPVOID pvContext,
HWND hWnd,
LONG nFiles,
LPCSTR* lpFileNames,
LONG fOptions,
LPCMDOPTS pvOptions
);
Parâmetros
pvContext
[in] A estrutura de contexto de plug-in de controle de origem.hWnd
[in] Um identificador para a janela do IDE que o plug-in de controle de origem pode usar como um pai para as caixas de diálogo que ele fornece.nFiles
[in] Número de arquivos especificados no lpFileNames array.lpFileNames
[in] Matriz de nomes totalmente qualificados de arquivos a serem recuperados.fOptions
[in] Command flags (SCC_GET_ALL, SCC_GET_RECURSIVE).pvOptions
[in] Opções de plug-in específico de controle de origem.
Valor de retorno
A implementação de plug-in de controle de origem dessa função deve retornar um dos seguintes valores:
Valor |
Descrição |
---|---|
SCC_OK |
Sucesso da operação obter. |
SCC_E_FILENOTCONTROLLED |
O arquivo não está sob controle de origem. |
SCC_E_OPNOTSUPPORTED |
O sistema de controle de origem não oferece suporte para esta operação. |
SCC_E_FILEISCHECKEDOUT |
Não é possível obter o arquivo que o usuário atualmente fez check-out. |
SCC_E_ACCESSFAILURE |
Houve um problema ao acessar o sistema de controle de origem, provavelmente devido a problemas de rede ou contenção. Recomenda-se uma nova tentativa. |
SCC_E_NOSPECIFIEDVERSION |
Uma versão inválida ou data/hora especificado. |
SCC_E_NONSPECIFICERROR |
Falha não específica; arquivo não foi sincronizado. |
SCC_I_OPERATIONCANCELED |
Operação cancelada antes da conclusão. |
SCC_E_NOTAUTHORIZED |
O usuário não está autorizado a realizar esta operação. |
Comentários
Esta função é chamada com uma contagem e uma matriz de nomes dos arquivos a serem recuperados. Se o IDE passar o sinalizador SCC_GET_ALL, isso significa que os itens na lpFileNames não são arquivos, diretórios, mas, e que todos os arquivos sob controle de origem nos diretórios determinados devem ser recuperados.
O SCC_GET_ALL sinalizador pode ser combinado com o SCC_GET_RECURSIVE sinalizador para recuperar todos os arquivos nos diretórios determinados e todos os subdiretórios também.
Dica
SCC_GET_RECURSIVEnunca deve ser transmitido sem SCC_GET_ALL.Além disso, observe que se os diretórios C:\A e C:\A\B são ambos passada uma recursiva obterão, C:\A\B e todos os seus subdiretórios serão realmente recuperados duas vezes.É responsabilidade do IDE — e não a fonte de controle do plug-in — para certificar-se de que o duplicatas como esse são mantidas fora do array.
Finalmente, mesmo se o plug-in de controle de uma origem especificada a SCC_CAP_GET_NOUI sinalizador de inicialização, indicando que não tem uma interface de usuário para um comando Get, esta função ainda pode ser chamada pelo IDE para recuperar arquivos. O sinalizador simplesmente significa que o IDE não exibe um item de menu Get e que o plug-in não é esperado para fornecer qualquer interface de usuário.
Renomeando e SccGet
Situação: um usuário faz check-out de um arquivo, por exemplo, a.txt e modifica a ele. Antes de a.txt pode fazer check-in, um segundo usuário renomeia a.txt para b.txt do banco de dados de controle de origem, o check-out de b.txt, faz algumas modificações no arquivo e verifica o arquivo. O primeiro usuário que deseja que as alterações feitas pelo usuário segundo para que o primeiro usuário renomeia a sua versão local do arquivo de a.txt para b.txt e faz um get no arquivo. No entanto, o cache local que mantém controle sobre números de versão ainda acha a primeira versão do a.txt é armazenada localmente e assim, o controle de origem não pode resolver as diferenças.
Há duas maneiras para resolver essa situação em que o cache local de versões de controle de origem se torna fora de sincronia com o banco de dados de controle de origem:
Não permitem renomear um arquivo do banco de dados de controle de origem que está sendo verificado.
Fazer o equivalente a "exclusão antigo" seguido de "Adicionar novo". O algoritmo a seguir é uma maneira de fazer isso.
Chamar o Função SccQueryChanges a função para saber mais sobre a renomeação de a.txt para b.txt do banco de dados de controle de origem.
Renomeie o local a.txt para b.txt.
Chamar o SccGet a função para a.txt e b.txt.
Porque a.txt não existe no banco de dados de controle de origem, o cache da versão local é limpo, as informações de versão do a.txt ausente.
O arquivo b.txt check-out será mesclado com o conteúdo do arquivo local b.txt.
O arquivo b.txt atualizado pode agora fazer check-in.