我主要在Mac桌面上开发iOS应用程序,但有时我会带着MacBook Air笔记本电脑旅行,我经常需要在旅途中继续开发应用程序。
当然,也可以只将文件scp到我的笔记本电脑上,对其进行处理,然后将其scp回桌面,或者使用U盘。但我必须相信,成千上万的其他人也有类似的需求。有没有一种简单的方法可以共享源代码控制,并在旅途中签入/签出?
在多个设备上进行流畅、单一开发人员跟踪开发的最佳实践是什么?
发布于 2017-12-08 04:26:41
我不确定这个问题是否属于这里,但嘿,我自己问的,所以这些就是我的实践。我不会称它为“最佳”实践,只是我多年来尝试过的东西:
Git
使用git存储库。我猜你已经在使用它了,如果没有,创建一个存储库(在Bitbucket中,你可以免费拥有私有repos )。即使您使用其他方式同步您的计算机,也要这样做。
有许多方法可以使用git来保持您的台式机和笔记本电脑同步。当不容易执行正确的提交时(例如,您正在进行重大更改,您不希望只在无意义的提交日志下提交所有内容),您可以使用预先确定的消息(如** SYNC ** )编写一个丢弃提交,然后将其推送到您的远程。
在您的笔记本电脑中,拉入并软重置以获得提交前的更改:git reset HEAD^。
当您返回到桌面时,对上次提交的git reset --hard HEAD^执行硬重置并提取更改。
根据我的经验,不是最好的解决方案:台式机/笔记本电脑的过渡应该是快速和毫不费力的。仅仅因为您需要更改机器,就想着要提交什么以及如何提交是一件痛苦的事情。
弹性同步
使用Bittorrent Resilio Sync在台式机和笔记本电脑之间同步多个文件夹(如果您对安全性有疑虑,可以将其配置为只使用LAN )。
它工作了一段时间,非常好,但不知何故它坏了,我不想调查原因,因为我怀疑它稍后会再次坏掉。
Dropbox
当我懒惰时,使用Dropbox同步两台计算机。它工作得很好。如果你信任Dropbox的话。
其他云提供商也是如此(除了iCloud,它的速度非常慢)。
SSD卡
直接在SSD卡中工作。这已经足够快了;只要确保你没有把构建写到卡片上就行了。显然,两台计算机都需要一个读卡器。这不是一个长期的解决方案。
Mac应用程序
专用的mac应用程序可以在机器之间同步文件夹。它们都没有完美的工作。有些太复杂了,或者没有维护,或者是糟糕的windows端口,等等。我会买一个简单的,它能正常工作,并能清楚地传达它在引擎盖下的作用。
Rsync
使用rsync使项目文件夹在两台计算机上保持同步。
现在,我在macOS共享文件夹之上使用rsync解决方案(如果您愿意,可以通过SSH使用它)。
我在项目文件夹中为每个项目提供了几个shell脚本:
project-name->laptop.sh
project-name->desktop.sh其中"laptop“和"desktop”是我的机器名称。当我需要使用笔记本电脑时,我只需要挂载共享文件夹(通常我只需要打开笔记本电脑)并运行project-name->laptop.sh。当我回来的时候,我会做相反的事情,我运行project-name->desktop.sh。简单和容易。您可以将每个脚本仅放在相应的机器中,以避免错误。
示例:
PROJECT_DIR=/Volumes/julian/path/to/project
if [ ! -d $PROJECT_DIR ] ; then
echo "Mount $PROJECT_DIR first."
exit 10
fi
if [ ! -x ./sync.sh ] ; then
echo "Must run from /local/path/project directory"
exit 11
fi
./sync.sh $PROJECT_DIR project-name $@所有项目的sync.sh都是一样的,类似于:
#!/bin/sh
#
# sync.sh <project-folder> [-no]
#
SOURCE_DIR=$1 && shift
TARGET_DIR=$1 && shift
function usage {
echo $0 '<project> [-no]'
}
if [ "$SOURCE_DIR" == "" ] ; then
echo 'Missing source'
usage
exit 1
fi
if [ "$TARGET_DIR" == "" ] ; then
echo 'Missing target'
usage
exit 2
fi
rsync $@ -va --delete \
--exclude='*.pyc' \
--exclude='*.db' \
--exclude='__pycache__' \
--exclude='.DS_Store' \
--exclude='._*' \
${SOURCE_DIR}/ \
${TARGET_DIR}/我使用了一些我已经忘记的其他解决方案。对我来说,rsync是最简单、最稳定的选择。
发布于 2017-12-08 04:30:08
使用与SourceTree相结合的免费BitBucket帐户。除了可以在多台计算机上使用之外,您还可以免费进行版本控制和备份。
https://stackoverflow.com/questions/47702235
复制相似问题