Go to your project folder and create sync-config.yaml first:
ngi-sync init
After that you will have :
xxx_sync-config.yaml or sync-config.yaml (if start from empty project) :This is a config file for connecting to the server. Rename it to sync-config.yaml
D:\workspaces\sample>ngi-sync init
You are in: D:\workspaces\sample
Initialize Bootstrap Is Done!
[ undefined, undefined ]
---------------------------------------------------
Replace xxx_sync-config.yaml to sync-config.yaml
---------------------------------------------------
D:\workspaces\sample>
.sync_ignore
This file ignores some file or extension file while sync to the server. The principle is same like .ignore file on git
Then open the file, and edit some config to connecting to your server
project_name: Your project name
username: root
privateKey: C:/Users/donny/.ssh/openssh_nopassword.key
host: 127.0.0.2
port: 22
localPath: D:/workspaces/sample
remotePath: /root/workspaces/sample_project
ignores: []
downloads: []
single_sync: []
trigger_permission:
unlink_folder: true
unlink: true
change: true
add: true
direct_access:
config_file: ""
ssh_configs:
- Host: sample_project_connection
HostName: =host
User: =username
Port: =port
RequestTty: force
IdentityFile: =privateKey
StrictHostKeyChecking: no
RemoteCommand: cd =remotePath && bash -l
ServerAliveInterval: 300
ServerAliveCountMax: 2
ssh_commands:
# This command for use create folder project on server first
- access_name: Create folder on server
command: ssh -v -o RemoteCommand=none sample_project_connection -t mkdir =remotePath
# This command for enter to the server and go to project folder
- access_name: Enter to Server
command: ssh -v -o RemoteCommand=none sample_project_connection
With this config we have ssh_command that we use to connect to the server
ssh_commands:
# This command for use create folder project on server first
- access_name: Create folder on server
command: ssh -v -o RemoteCommand=none sample_project_connection -t mkdir =remotePath
# This command for enter to the server and go to project folder
- access_name: Enter to Server
command: ssh -v sample_project_connection
D:\workspaces\sample>ngi-sync
You are in: D:\workspaces\sample
Initialize Bootstrap Is Done!
[ undefined, undefined ]
? Direct Access List : (Press <enter> to submit)
> Create folder on server
Enter to Server
console :: Open Console
devsync :: Open Devsync
devsync2 :: Open Devsync2
clean :: Git clean up : git add --renormalize . && git reset
Restart
Here the following rules:
Submit the first command because we need to create a folder first on the server.
Run ngi-sync again and submit the devsync2 command devsync :: Open Devsync. And next choose the first option safe_sync :: DevSync Basic .... It will start synchronizing our code to the server project folder continuously.
D:\workspaces\sample>ngi-sync
You are in: D:\workspaces\sample
Initialize Bootstrap Is Done!
[ undefined, undefined ]
? Direct Access List : devsync2 :: Open Devsync2
? Enter again ⎆:
⫸ Initializing...
extra_command null
? Devsync Mode : (Use arrow keys)
> safe_sync :: DevSync Basic Safe Syncronise
- Trigger by edit file :)
safe_sync_non_force :: DevSync Basic with non force file
- Trigger by edit file :). Ignored file not activated except pull sync
- Caution : This mode will take a long time indexing the file. and need more consume RAM
safe_pull_sync :: devsync Pull Syncronise
- This feature only download by your base template
(Move up and down to reveal more choices)
Create file hello_word.js on our local side with this body and save it
console.log("Hello world")
When you create and update the hello_world.js It will sync to the server directly and keep it running.
? Devsync Mode : safe_sync :: DevSync Basic Safe Syncronise
- Trigger by edit file :)
⫸ Initializing...
rsync command -> rsync -avzL --size-only --checksum --rsh="ssh -i C:/Users/donny/.ssh/openssh_nopassword.key -p 22" --exclude=sync-config.yaml --exclude=.sync_ignore --exclude=.sync_ignore\ --exclude=sync-config.yaml\ --exclude=sync-config.yml\ --exclude=.sync_temp
--exclude=.sync_temp root@127.0.0.2:/root/workspaces/sample_project/ ./
This rsync lacks old-style --compress due to its external zlib. Try -zz.
Continuing without compression.
receiving incremental file list
./
sent 163 bytes received 43 bytes 137.33 bytes/sec
total size is 0 speedup is 0.00
⫸ SFTP-WATCHER ::
-------------------------------------
⫸ Initializing... Connected 127.0.0.2
-------------------------------------
-------------------------------------
Started monitoring
Quit the script with CONTROL-C".
-----------------------------------------------------------
⫸ ENTRY : ADD ✓ Done
⫸ ADD :: UPLOADING ✓ Done
⫸ ENTRY : CHANGE ✓ Done
⫸ CHANGED :: UPLOADING ✓ Done
Open new command prompt or terminal and Run ngi-sync again and choose recent project folder just open before, if you are not right place project folder.
C:\Users\donny>ngi-sync
You are in: C:\Users\donny
Initialize Bootstrap Is Done!
[ undefined, undefined ]
Config file not found
USAGE:
Make sure you have the config file by running.
ngi-sync init
------------------------------
For more details please visit. https://github.com/rolldone/ngi-sync
-----------------------------------------------------------------------------
Display recent workspaces :
? Display open recent : (Press <enter> to submit)
> recent : D:/workspaces/sample
--------------------------------------
sample : D:/workspaces/sample
It will jump to the project folder directly. And will display the next main menu, choose second menu.
> Enter to Server
Ok we will enter to the server and check the file that we create it hello_world.js
root@ubuntu-focal:~/workspaces/sample_project# ls
hello_word.js
root@ubuntu-focal:~/workspaces/sample_project#
Ok that's a basic use for sync our code to the server. And next we will learn a advanced sync our code to the server. For now better we learn which every option on sync-config.yaml