Partilhar via


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:

  1. Não permitem renomear um arquivo do banco de dados de controle de origem que está sendo verificado.

  2. Fazer o equivalente a "exclusão antigo" seguido de "Adicionar novo". O algoritmo a seguir é uma maneira de fazer isso.

    1. 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.

    2. Renomeie o local a.txt para b.txt.

    3. Chamar o SccGet a função para a.txt e b.txt.

    4. 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.

    5. O arquivo b.txt check-out será mesclado com o conteúdo do arquivo local b.txt.

    6. O arquivo b.txt atualizado pode agora fazer check-in.

Consulte também

Conceitos

Funções de API plug-in de controle de origem

Sinalizadores de bit usado por comandos específicos