Função SccOpenProject
Essa função abre um projeto de controle de origem existente ou cria um novo.
SCCRTN SccOpenProject (
LPVOID pvContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpProjName,
LPCSTR lpLocalProjPath,
LPSTR lpAuxProjPath,
LPCSTR lpComment,
LPTEXTOUTPROC lpTextOutProc,
LONG dwFlags
);
Parâmetros
pvContext
[in] A estrutura de contexto 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 que ele fornece caixas de diálogo.lpUser
[in, out] O nome do usuário (não exceder SCC_USER_SIZE, incluindo o terminador nulo).lpProjName
[in] A seqüência identificando o nome do projeto.lpLocalProjPath
[in] O caminho para a pasta de trabalho do projeto.lpAuxProjPath
[in, out]Uma cadeia auxiliar opcional que identifica o projeto (não exceder SCC_AUXPATH_SIZE, incluindo o terminador nulo).lpComment
[in] Comentário para um novo projeto que está sendo criado.lpTextOutProc
[in] Uma função de retorno de chamada opcional para exibir texto de saída do plug-in de controle de origem.dwFlags
[in] Se um novo projeto precisa ser criado se o projeto for desconhecido para a fonte de sinais de controlam plug-in. Valor pode ser uma combinação de SCC_OP_CREATEIFNEW eSCC_OP_SILENTOPEN.
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 na abertura do projeto. |
SCC_E_INITIALIZEFAILED |
Projeto não pôde ser inicializado. |
SCC_E_INVALIDUSER |
O usuário não pôde logon no sistema de controle de origem. |
SCC_E_COULDNOTCREATEPROJECT |
O projeto não existia antes para a chamada; o SCC_OPT_CREATEIFNEW sinalizador foi definido, mas o projeto não pôde ser criado. |
SCC_E_PROJSYNTAXERR |
Sintaxe de projeto inválido. |
SCC_E_UNKNOWNPROJECT |
O projeto é desconhecido para o plug-in de controle de origem 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 esta operação. |
SCC_E_ACCESSFAILURE |
Houve um problema ao acessar o sistema de controle de origem, provavelmente devido a problemas de rede ou contenção. É recomendável uma nova tentativa. |
SCC_E_NONSPECFICERROR |
Uma falha não específica; o sistema de controle de origem não foi inicializado. |
Comentários
O IDE pode passar um nome de usuário (lpUser), ou simplesmente pode passar em um ponteiro para uma seqüência vazia. Se houver um nome de usuário, o plug-in de controle de origem deve usá-lo como padrão. No entanto, se nenhum nome foi passado ou falha de logon com o nome fornecido, o plug-in deve solicitar ao usuário para efetuar login e retornará o nome válido de lpUser quando ele recebe um login válido. porque o plug-in pode alterar a seqüência de caracteres de nome de usuário, o IDE sempre alocar um buffer de tamanho (SCC_USER_LEN+ 1 ou SCC_USER_SIZE, que inclui o espaço para o terminador nulo).
Dica
A primeira ação que o IDE pode ser necessário executar pode ser uma chamada para o SccOpenProject função ou a Função SccGetProjPath.Por esse motivo, eles têm um idêntico lpUser parâmetro.
lpAuxProjPathelpProjName ler do arquivo de solução, ou eles são retornados de uma chamada para o SccGetProjPath função. Esses parâmetros contêm seqüências de caracteres que o plug-in de controle de origem associa o projeto e são significativos para o plug-in. Se tais cadeias de caracteres não estão no arquivo de solução e o usuário não foi solicitado para procurar (que retorna uma seqüência de caracteres através do SccGetProjPath função), IDE passa seqüências vazias para ambos lpAuxProjPath e lpProjNamee espera que esses valores sejam atualizados pelo plug-in quando essa função retorna.
lpTextOutProcé um ponteiro para uma função de retorno de chamada fornecido pelo IDE para o plug-in a fim de exibir a saída do comando resultado de controle de origem. Esta função de retorno de chamada é descrita em detalhes em LPTEXTOUTPROC.
Dica
Se o plug-in de controle de origem pretende aproveitar isso, ele deve ter definido o SCC_CAP_TEXTOUT sinalizador na Função SccInitialize.Se esse sinalizador não foi definido ou se o IDE não suporta este recurso, lpTextOutProc será NULL.
O dwFlags parâmetro controla o resultado que o projeto que está sendo aberto não existe. Ele consiste em dois os sinalizadores de bit, SCC_OP_CREATEIFNEW e SCC_OP_SILENTOPEN. Se o projeto que está sendo aberto já existir, a função simplesmente abre o projeto e retorna SCC_OK. Se o projeto não existe e se o SCC_OP_CREATEIFNEW sinalizador está no, o plug-in de controle de origem pode criar o projeto no sistema de controle de origem, abri-lo e retornar SCC_OK. Se o projeto não existe e se o SCC_OP_CREATEIFNEW sinalizador estiver desativado, o plug-in deve verificar para o SCC_OP_SILENTOPEN sinalizador. Se esse sinalizador não estiver ativado, o plug-in pode solicitar ao usuário um nome de projeto. Se esse sinalizador está ligado, o plug-in deve simplesmente retornar SCC_E_UNKNOWNPROJECT.
Ordem de chamada
No curso normal dos eventos, o Função SccInitialize seria chamado primeiro abrir uma sessão de controle de origem. Uma sessão pode consistir de uma chamada para SccOpenProject, seguido por outras chamadas de função de API de plug-in de controle de origem e terminará com uma chamada para o Função SccCloseProject. Tais sessões podem ser repetidas várias vezes antes de Função SccUninitialize é chamado.
Se conjuntos de plug-in de controle de origem do SCC_CAP_REENTRANT bit no SccInitialize, e a seqüência de sessão acima pode ser repetida várias vezes em paralelo. Diferentes pvContext estruturas controlar sessões diferentes, na qual cada pvContext está associado um projeto aberto ao mesmo tempo. Baseia opvContext parâmetro, o plug-in pode determinar qual projeto é referenciado em qualquer chamada específica. Se o recurso bit SCC_CAP_REENTRANT não estiver definido, nonreentrant plug-ins de controle de origem são limitados em sua capacidade de trabalhar com vários projetos.
Dica
O SCC_CAP_REENTRANT bit foi introduzido na versão 1.1 da API de plug-in controle de origem.Ele não está definido ou é ignorado na versão 1.0 e versão 1.0 todos source control plug-ins são considerados nonreentrant.