Controle de Código da VFS
Introdução
É possível criar e visualizar alterações nos arquivos da Virtual File System utilizando o Source Control do VS Code antes que essas alterações sejam efetivadas na base de dados. São as chamadas alterações pendentes (Pending Changes).
Para criar uma alteração pendente, o usuário deve:
- Clicar em uma das opções entre
Update From
ouUpdate To
no menu de contexto de um arquivo da VFS ou executar o respectivo comando via paleta de comandos com o arquivo desejado aberto. - Para o
Update From
, selecionar origem do conteúdo a ser sobrescrito no arquivo que foi escolhido. O usuário pode escolher de uma das bases conectadas ou da área de transferência (clipboard). Caso o usuário escolha uma base como fonte, o conteúdo usado para alterar o arquivo será o conteúdo do arquivo de mesma chave da base. - Para o
Update To
, selecionar a base de destino para a qual as alterações no arquivo corrente serão enviadas.
Feito este processo, a alteração pendente será exibida no Source Control e um diff com as alterações será aberto no editor.
É importante ressaltar que uma alteração pendente nunca é imediatamente salva na Virtual File System, existindo apenas localmente enquanto o usuário não efetivá-la. Adiante será explicado como efetivar alterações.
Exemplo
A base de dados BASE-D
possui um arquivo teste.js
, e BASE-H
possui o mesmo arquivo,
de mesma chave, mas com o conteúdo diferente. Caso o usuário queira atualizar o arquivo
teste.js
em BASE-H
a partir da BASE-D
, ele deve estar com as duas bases conectadas em seu
workspace e pode escolher um dos seguintes procedimentos:
-
Opção 1:
- Executar
Update From
a partir do arquivoteste.js
daBASE-H
. - Selecionar como origem a
BASE-D
.
- Executar
-
Opção 2:
- Executar
Update To
a partir do arquivoteste.js
daBASE-D
. - Selecionar como destino a
BASE-D
.
- Executar
-
Opção 3:
- Copiar o conteúdo do arquivo
teste.js
daBASE-D
. - Executar
Update From
a partir do arquivoteste.js
daBASE-H
. - Selecionar como origem o clipboard.
- Copiar o conteúdo do arquivo
Ao fazer isso, o Source Control será preenchido com a alteração pendente, e um diff será
aberto com o atual conteúdo de teste.js
na BASE-H
sendo exibido à esquerda, e o novo conteúdo
a ser salvo na BASE-H
(ou seja, o conteúdo proveniente da BASE-D
) na direita. O conteúdo na
direita é editável.
O usuário poderia também, por exemplo, criar uma alteração pendente para um arquivo utilizando como fonte um conteúdo avulso no clipboard não necessariamente relacionado a alguma outra base. Isso pode ser útil nos casos em que o desenvolvedor deseja salvar seu trabalho em andamento sem que isso seja persistido de imediato na Virtual File System.
Anatomia do Source Control
A seguir, um exemplo de uma alteração pendente criada para a base nginstack
:
Temos em:
- Ações envolvendo a view do source control e a base de dados como um todo. Da esquerda para a direita:
- View as Tree/View as a list: Altera o formato de visualização do source control.
- Refresh: Atualiza as alterações pendentes daquela base.
- Save All Changes on VFS: Efetiva na VFS todas as alterações listadas naquela base.
- Views and More Actions: Acessa outras ações e opções.
- Ações específicas para a alteração pendente no arquivo. Da esquerda para a direita:
- Discard Changes: Descarta alterações.
- Edit Pending Change: Abre o arquivo de edição da alteração pendente.
- Open Original File: Abre o arquivo original da VFS, sem as alterações.
- Save Changes on VFS: Efetiva as alterações daquele arquivo na VFS.
- Ações específicas para a alteração pendente no arquivo, semelhantes ao menu 2:
- Discard Changes
- Save Changes on VFS
Todas as ações nos botões do menu 2 também estão presentes no menu de contexto do arquivo com alterações pendentes listado no source control. Todas as ações do menu 3 também estão presentes no menu de contexto do arquivo de alterações pendentes. No menu Views and More Actions, temos a opção Discard All Changes, que descarta todas as alterações listadas naquela base.
Semelhante aos arquivos da VFS, em que a raiz dos breadcrumbs tem o formato base (vfs)
.
Os arquivos de alterações pendentes possuem o formato base (change)
. No caso do exemplo acima,
temos nginstack (change)
.