Hoje postarei uma dica de como integrar o Totvs Development Studio (IDE) ao SVN (Subversion) utilizando o "client" TortoiseSVN para controle de versão dos fontes do Totvs/Protheus.
Utilizaremos, para isso, macros do IDE. No Exemplo, a macro
$SOURCE_NAME irá retornar o caminho completo do "fonte" a ser manipulado. Algumas macros do IDE são:
$SOURCE_NAME
$SOURCE_NAME_NO_DRIVE
$SOURCE_SHORT_NAME
$SOURCE_CURSOR_LINE
$SOURCE_CURSOR_COLUMN
$SOURCE_CURSOR_WORD
$SOURCE_EXECUTION_LINE
$SOURCE_PATH
$SOURCE_EXT
$SOURCE_DRIVE
$SYSTEM_DATE
$SYSTEM_TIME
$SYSTEM_USER_NAME
$SYSTEM_USER_ACCESS
$VERSION_ADD_FILE
$VERSION_ASK_FOR_COMMENT
$VERSION_CHECK_OUT
$VERSION_CHECK_IN
$VERSION_GET_LAST
$VERSION_REMOVE_FILE
$VERSION_UNDO_CHECK_OUT
Observações:
- Se o server do SubVersion estiver em linux, não utilize a macro $SOURCE_NAME_NO_DRIVE, pois essa, quando o arquivo "fonte" possui _ ("underline"), passa-o como "upper case" fazendo com que o cliente do SubVersion, o TortoiseSVN não consiga encontrar o arquivo;
- Para que seja possível efetuar o "lock/unlock" dos "fontes" a propriedade "svn:needs-lock" deverá ter sido atribuida aos arquivos que deseja versionar;
Vamos ao que interessa:
- Abra o "Totvs Development Studio" (IDE) executando o arquivo TotvsDevStudio.exe;
- No menu Arquivo\Preferências, selecione a "aba" Controle de Versão;
- Marque o "check box" Utiliza Controle de Versão;
- Dentre as opções "Visual Source Safe" e "Outros", selecione: "Outros";
- Configure as opções como abaixo:

- Software: TortoiseProc.exe
- Iniciar em: %ProgramFiles%\TortoiseSVN\bin\
- Última Versão: /command:update /path:"$SOURCE_NAME" /notempfile /closeonend:3
- Reservar: /command:lock /path:"$SOURCE_NAME" /notempfile /closeonend:3
- Canc. Reserva: /command:unlock /path:"$SOURCE_NAME" /notempfile /closeonend:3
- Confirmar: /command:commit /path:"$SOURCE_NAME" /notempfile /closeonend:3
- Adicionar: /command:add /path:"$SOURCE_NAME" /notempfile /closeonend:3
- Remover: /command:remove /path:"$SOURCE_NAME" /notempfile /closeonend:3
Se preferir, copie e cole o conteúdo abaixo no totvsdevstudio.ini na seção "[Source Control]"
[Source Control]
Source Control Software=TortoiseProc.exe
Initial Path=%ProgramFiles%\TortoiseSVN\bin\
Get Latest Version=/command:update /path:"$SOURCE_NAME" /notempfile /closeonend:3
Check In=/command:commit /path:"$SOURCE_NAME" /notempfile /closeonend:3
Check Out=/command:lock /path:"$SOURCE_NAME" /notempfile /closeonend:3
Add File=/command:add /path:"$SOURCE_NAME" /notempfile /closeonend:3
Remove File=/command:remove /path:"$SOURCE_NAME" /notempfile /closeonend:3
Undo Check Out=/command:unlock /path:"$SOURCE_NAME" /notempfile /closeonend:3
e altere a chave "Use Source Control" de 0 para 1 como em: Use Source Control=1 na seção [Preferences].
Ao fazer isso, será disponibilizada uma nova "palheta" com as seguintes opções:

Onde:

obtém a última versão do arquivo

efetua a reserva do arquivo

confirma as alterações enviando-as para o software de versionamento

desfaz/cancela a reserva

adiciona arquivo ao controle de versionamento

remove arquivo do controle de versionamento
Para informações e download do SubVersion, clique
aqui;
Para baixar o TortoiseSVN clique
aqui; e
Para mais informações de como utilizar o TortoiseSVN em linha de comando, clique
aqui;
Naldo show de bola.
ResponderExcluirAlessandro (PB)
Ola Naldo. Voce eh o cara! Dah uma olhada nesse projeto e entra em contato comigo por favor: http://sourceforge.net/projects/pactvs pegue o documento com a descricao do projeto no link "files".
ResponderExcluirAbracos
MSilver
Naldo meus parabéns ficou incrível...
ResponderExcluirJean
Legal !
ResponderExcluirObrigado.
Boa tarde Naldo.
ResponderExcluirNo caso de termos vários programadores, o TortoiseSVN será instalado no servidor de aplicação ou nas máquinas dos programadores ???
Muito obrigado.
Rodrigo,
ResponderExcluirO TortoiseSVN é o "client" do SubVersion ou SVN e, dada a sua característica, deverá ser instalado no ambiente local de trabalho. Para não me alongar no comentário vou fazer-lhe uma pequena, mas útil, recomendação: Acompanhe os "Links" do Post: Dicas de Leitura :: SVN http://naldodjblogs.blogspot.com/2011/09/dicas-de-leitura-svn.html que vc encontrará boas recomendações.
[]s
иαldσ dj
Belíssimo tutorial Naldo.
ResponderExcluirParabéns pela dedicação e didática.
Ronaldo Marins
Olá Naldo.
ResponderExcluirVocê sabe me dizer se esses procedimentos podem ser aplicados para integrar a IDE com TFS 2012?
Obrigada.
Se estiver utilizando o TDS basta instalar o plug-in do TFS para Eclipse. Existem bons materiais na nuvem. Procure por TFS Eclipse. Já para a antiga IDE você terá que descobrir os comandos equivalentes aos do tortoise para check-in, check-out, etc... e aí, basta substituí-los.
ExcluirComo a TOTVS tem essa particularidade de controlar os fontes por data/hora conforme o RPO, qual ferramenta de versionamento de fontes consegue preservar a data/hora do arquivo ao realizar o commit do arquivo?
ResponderExcluireu continuo usando o SVN
ResponderExcluirBoa tarde Naldo.
ResponderExcluirTambém estou testando com o SVN, só não consegui que os fontes após o commit, a data/hora dos mesmos fossem preservadas conforme o arquivo.
Você está conseguindo preservar a data/hora? Você consegue verificar se a data de um determinado fonte do RPO é igual a de um determinado arquivo no repositório do SVN?
Obrigado.