Don*_*lon 5 remote synchronization latency
我开发了一个包含大量文件的 git-tracked 代码库。此代码必须在远程计算机上运行。因此,每次我在本地进行更改时,我都必须将其同步到远程并在远程上运行新代码。
我想消除手动同步步骤。我尝试过的事情:
git push
(本地)和git pull
(远程)进行工作是可行的,但会导致许多无用的提交。另外,有时我只是尝试一些小的改变,但我不希望这些改变被实施。sshfs
工作,但文件访问有轻微的延迟。我不介意,但 PyCharm 依赖它并且许多功能都被破坏了。有更好的方法来实现这一点吗?
小智 0
这种用例实际上很常见(尤其是在嵌入式开发中),因为正如您提到的,有时会发生本地计算机无法具有运行应用程序的正确环境的情况。
因此,许多/大多数 IDE 都有“远程运行”功能,但我没有使用 PyCharm 的经验。看这里的 PyCharm。
另一种与环境无关的方法是使用scp
或rsync
传输/同步文件,然后远程运行它们。
为了使其正常工作,您应该配置从主机到目标的 ssh 公钥身份验证ssh-copy-id user@target
然后您可以使用如下脚本将文件夹传输到远程,如果传输成功 - 运行一些命令:
#!/bin/bash
TARGET="<your-remote-here>";
USER="<your-user-name-on-remote-here>";
FOLDER_TO_TRANSMIT="<folder-to-transmit>";
FOLDER_TO_TRANSMIT_TO="<folder-path-on-target>";
REMOTE_COMMANDS="touch ~/testdir/z; ls ~/testdir;"
#transmit only (inefficiant, transmits everything, every time)
#scp -r $dir_to_transmit $USER@$TARGET:$FOLDER_TO_TRANSMIT_TO;
rsync -rv --delete $dir_to_transmit $USER@$TARGET:$FOLDER_TO_TRANSMIT_TO
if [ $? -eq 0 ]
then
ssh -t $USER@$TARGET "$REMOTE_COMMANDS"
fi
Run Code Online (Sandbox Code Playgroud)
使用此设置,您唯一需要担心的是正确清理每次传输到的文件夹。(rsync:--delete
源文件夹中不存在的所有内容也会在目标文件夹中删除,这可以通过排除模式来避免)(scp:如果适用,您可以例如删除整个远程文件夹,如果您愿意的话)
如果您的设置过程稍微复杂一些,您还可以创建一个每次都会传输的脚本,然后调用该脚本。