Função SccOpenProject
Essa função abre um projeto de controle de código-fonte existente ou cria um novo.
Sintaxe
SCCRTN SccOpenProject (
LPVOID pvContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpProjName,
LPCSTR lpLocalProjPath,
LPSTR lpAuxProjPath,
LPCSTR lpComment,
LPTEXTOUTPROC lpTextOutProc,
LONG dwFlags
);
Parâmetros
pvContexto
[em] A estrutura de contexto do plug-in de controle do código-fonte.
hWnd
[em] Um identificador para a janela do IDE que o plug-in de controle do código-fonte pode usar como pai para quaisquer caixas de diálogo que ele forneça.
lpUsuário
[dentro, fora] O nome do usuário (não deve exceder SCC_USER_SIZE, incluindo o terminador NULL).
lpProjName
[em] A cadeia de caracteres que identifica o nome do projeto.
lpLocalProjPath
[em] O caminho para a pasta de trabalho do projeto.
lpAuxProjPath
[dentro, fora] Uma cadeia de caracteres auxiliar opcional que identifica o projeto (não deve exceder SCC_AUXPATH_SIZE, incluindo o terminador NULL).
lpComentário
[em] Comente para um novo projeto que está sendo criado.
lpTextOutProc
[em] Uma função de retorno de chamada opcional para exibir a saída de texto do plug-in de controle do código-fonte.
dwFlags
[em] Sinaliza se um novo projeto precisa ser criado se o projeto for desconhecido para o plug-in de controle do código-fonte. O valor pode ser uma combinação de SCC_OP_CREATEIFNEW
e SCC_OP_SILENTOPEN.
Valor de retorno
Espera-se que a implementação do plug-in de controle do código-fonte dessa função retorne um dos seguintes valores:
Valor | Descrição |
---|---|
SCC_OK | Sucesso na abertura do projeto. |
SCC_E_INITIALIZEFAILED | O projeto não pôde ser inicializado. |
SCC_E_INVALIDUSER | O usuário não pôde efetuar login no sistema de controle de origem. |
SCC_E_COULDNOTCREATEPROJECT | O projeto não existia antes da chamada; A SCC_OPT_CREATEIFNEW bandeira foi definida, mas o projeto não pôde ser criado. |
SCC_E_PROJSYNTAXERR | Sintaxe de projeto inválida. |
SCC_E_UNKNOWNPROJECT | O projeto é desconhecido para o plug-in de controle do código-fonte e o SCC_OPT_CREATEIFNEW sinalizador não foi definido. |
SCC_E_INVALIDFILEPATH | Caminho de arquivo inválido ou inutilizável. |
SCC_E_NOTAUTHORIZED | O usuário não tem permissão para executar essa operação. |
SCC_E_ACCESSFAILURE | Houve um problema ao acessar o sistema de controle do código-fonte, provavelmente devido a problemas de rede ou contenção. Recomenda-se uma nova tentativa. |
SCC_E_NONSPECFICERROR | Uma falha inespecífica; O sistema de controle do código-fonte não foi inicializado. |
Comentários
O IDE pode passar um nome de usuário (lpUser
), ou pode simplesmente passar um ponteiro para uma cadeia de caracteres vazia. Se houver um nome de usuário, o plug-in de controle do código-fonte deverá usá-lo como padrão. No entanto, se nenhum nome foi passado ou se o login falhou com o nome fornecido, o plug-in deve solicitar que o usuário faça login e retornará o nome válido quando lpUser
receber um login.
válido Como o plug-in pode alterar a cadeia de caracteres do nome de usuário, o IDE sempre alocará um buffer de tamanho (SCC_USER_LEN
+1 ou SCC_USER_SIZE, que inclui espaço para o terminador nulo).
Observação
A primeira ação que o IDE pode ser necessário executar pode ser uma chamada para a SccOpenProject
função ou o SccGetProjPath. Por esse motivo, ambos possuem um parâmetro idêntico lpUser
.
lpAuxProjPath
elpProjName
são lidos a partir do arquivo de solução ou são retornados de uma chamada para a SccGetProjPath
função. Esses parâmetros contêm as cadeias de caracteres que o plug-in de controle do código-fonte associa ao projeto e são significativas apenas para o plug-in. Se essas cadeias de caracteres não estiverem no arquivo de solução e o usuário não tiver sido solicitado a navegar (o que retornaria uma cadeia de caracteres por meio da função), o SccGetProjPath
IDE passará cadeias de caracteres vazias para ambos lpAuxProjPath
e , e lpProjName
espera que esses valores sejam atualizados pelo plug-in quando essa função retornar.
lpTextOutProc
é um ponteiro para uma função de retorno de chamada fornecida pelo IDE para o plug-in de controle de origem com a finalidade de exibir a saída do resultado do comando. Essa função de retorno de chamada é descrita em detalhes em LPTEXTOUTPROC.
Observação
Se o plug-in de controle do código-fonte pretende tirar proveito disso, ele deve ter definido o SCC_CAP_TEXTOUT
sinalizador no SccInitialize. Se esse sinalizador não foi definido, ou se o IDE não oferece suporte a esse recurso, lpTextOutProc
será NULL
.
O dwFlags
parâmetro controla o resultado caso o projeto que está sendo aberto não exista no momento. Ele consiste em dois bitflags, SCC_OP_CREATEIFNEW
e SCC_OP_SILENTOPEN
. Se o projeto que está sendo aberto já existe, a função simplesmente abre o projeto e retorna SCC_OK
. Se o projeto não existir e se o sinalizador estiver ativado, o plug-in de controle do código-fonte poderá criar o SCC_OP_CREATEIFNEW
projeto no sistema de controle do código-fonte, abri-lo e retornar SCC_OK
. Se o projeto não existir e se o sinalizador estiver desativado, o SCC_OP_CREATEIFNEW
plug-in deverá verificar se há sinalizador SCC_OP_SILENTOPEN
. Se esse sinalizador não estiver ativado, o plug-in poderá solicitar ao usuário um nome de projeto. Se esse sinalizador estiver ativado, o plug-in deve simplesmente retornar SCC_E_UNKNOWNPROJECT
.
Ordem de chamada
No curso normal dos eventos, o SccInitialize seria chamado primeiro para abrir uma sessão de controle do código-fonte. Uma sessão pode consistir em uma chamada para , seguida por outras chamadas de função de API de plug-in de controle de código-fonte e será encerrada com uma chamada para SccOpenProject
o SccCloseProject. Tais sessões podem ser repetidas várias vezes antes que o SccUninitialize seja chamado.
Se o plug-in de controle do código-fonte definir o SCC_CAP_REENTRANT
bit no SccInitialize
, a sequência de sessão acima poderá ser repetida várias vezes em paralelo. Diferentes pvContext
estruturas acompanham as diferentes sessões, nas quais cada uma está associada a um projeto aberto de cada pvContext
vez. Com base nopvContext
parâmetro, o plug-in pode determinar qual projeto é referenciado em qualquer chamada específica. Se o bit SCC_CAP_REENTRANT
de capacidade não estiver definido, os plug-ins de controle de origem não reentrantes serão limitados em sua capacidade de trabalhar com vários projetos.
Observação
O SCC_CAP_REENTRANT
bit foi introduzido na versão 1.1 da API de plug-in de controle de código-fonte. Ele não está definido ou é ignorado na versão 1.0, e todos os plug-ins de controle de origem da versão 1.0 são assumidos como não reentrantes.