A Dendron workspace is a collection of one or more vaults (folders with notes).
Every workspace has a dendron.yml which specifies all vaults and configurations for a particular workspace.
Most workspaces only have a single vault. See Multi Vault for scenarios of adding additional vaults.
The folder that contains files like
dendron.code-workspace is the top-level directory of a workspace, known as the workspace root.
A workspace that is created using
A workspace that is created with a
dendron.yml file and lacking a
A bare workspace is a workspace where all vaults inside are remote vaults (separate git repos). You can have a bare code workspace or a bare native workspace.
Workspace: Add and Commit
Add and commit all notes across all vaults to git.
Synchronizes all notes across all vaults with git. Any changes you made will be pushed back to remote, and any changes in the remote will be pulled.
In more detail: Dendron will first commit all your changes, then pull changes from the remote, and finally push everything back to the remote. This workflow is good in most cases: private notes, internal shared vaults, or your personal writings. This workflow doesn't work as well in some cases however, so we offer per-vault configuration options which you can use to adjust how your notes are synchronized.
You can set these configuration options in your
dendron.yml, either for each vault with the
sync option, or for all workspace vaults with the
workspaceVaultSync option. The configuration will look like this:
... rest of your dendron.yml workspaceVaultSync: noPush vaults: - fsPath: my-website sync: noCommit remote: type: git url: 'email@example.com:my-username/my-website.git' - fsPath: my-notes sync: sync type: git url: 'firstname.lastname@example.org:my-username/my-notes.git'
Dendron will try to synchronize everything: Dendron will first commit all your changes, then pull changes from the remote, and finally push everything back to the remote. This is the default for regular vaults.
Pull and push updates if the workspace is clean, but don't commit. You manually commit your local changes, but automatically share them once you committed. This is good for vaults where you want to write a meaningful commit message and control what is being committed, for example a shared knowledge base or wiki. This is the default for Workspace Vaults.
Commit any changes and pull updates, but don't push. You can watch the repository and make local changes without sharing them back. This is good if you want to watch the updates in a vault and maybe even note your own thoughts in the vault without sharing them, for example an organization handbook that you don't want to edit yourself.
Don't do any synchronization. This may be useful if you use some other tool to synchronize this vault.
Dendron recognizes 2 types of workspaces, Code and Native. When you initialize your workspace with
the Initialize Workspace command, you get a Code
workspace. Code workspaces include a
dendron.code-workspace file which sets up vaults and
recommends installing some useful extensions. Code workspaces are great when you are setting up a
Native workspaces on the other hand don't have a
They are useful when you are writing notes or documentation, and you want to
keep your notes as part of a project rather than a separate knowledge base.
See Native Workspace Setup to see how you can start using a native workspace!
Version control your workspace using Git
Inside your workspace, run the following
- Initialize a git repo
git init git add . git commit -m "initial commit"
- Add a remote
- go to GitHub, and create a new workspace
- follow instructions to add an existing git repo to the repository
Syncing your workspace with Git
Workspace Sync does not sync the workspace if all your vaults are separate git repos. In order to synchronize your workspace, you need to explicitly do a
git pull from the workspace folder.
If you are inside VS Code, you should be able to run
> Create Integrated Terminal..., choose the folder containing your workspace, and launch the terminal. After launching, run a
git pull inside of it.