我主要在Mac桌面上开发iOS应用程序,但有时我使用MacBook Air笔记本电脑旅行,我经常需要在旅途中继续使用应用程序。
当然,可以将文件scp到我的笔记本电脑,处理它,然后将其刻录到桌面,或者使用拇指驱动器。但我必须相信成千上万的人有类似的需求。有没有一种简单的方法来共享源代码控制,只是在旅途中签入/签出?
在多个设备上进行流畅的单一开发人员跟踪开发的最佳实践是什么?
答案 0 :(得分:3)
使用免费的BitBucket帐户,结合SourceTree。除了能够在多台计算机上使用它之外,您还可以免费进行版本控制和备份。
答案 1 :(得分:2)
我不确定这个问题属于这里,但嘿,我自己问,所以这些都是我的做法。我不会称之为“最好”的做法,只是我多年来尝试过的东西:
使用git存储库。我猜你已经在使用它,如果没有,创建一个存储库(在Bitbucket你可以免费获得私人存储库)。即使您使用其他内容来同步计算机,也要这样做。
有很多方法可以使用git来保持桌面和笔记本电脑的同步。如果执行正确的提交并不容易(即,您正处于重大变更的中间,并且您不希望仅在非意义提交日志下提交所有内容),则可以使用预定的消息编写一次丢弃提交** SYNC **
,然后将其推送到您的遥控器。
在您的笔记本电脑中,进行拉动和软重置,以便在提交之前进行更改:git reset HEAD^
。
当您返回桌面时,请执行上次提交git reset --hard HEAD^
的硬重置并提取更改。
不是最好的解决方案:过渡桌面/笔记本电脑应该快速而轻松。考虑要做什么以及如何因为你需要更换机器这一点很痛苦。
使用Bittorrent Resilio Sync同步台式机和笔记本电脑之间的多个文件夹(如果您对安全性感到偏执,可以将其配置为仅使用LAN)。
它工作了一段时间,非常好,但不知何故它破了,我不想调查原因,因为我怀疑它会在以后再次破裂。
当我懒惰时,使用Dropbox同步两台计算机。它工作正常。如果你还是信任Dropbox。
与其他云提供商相同(除了非常缓慢的iCloud)。
直接在SSD卡中工作。它足够快;只是确保你没有将构建写入卡。显然,你需要在两台计算机上都有一个读卡器。不是一个长期的解决方案。
在计算机之间同步文件夹的专用mac应用程序。他们都没有完美无瑕地工作。有些太复杂,或者没有维护,或者是可怕的Windows端口等等。我买了一个简单的工作,并清楚地传达了它在幕后的作用。
使用rsync
在两台计算机中保持项目文件夹同步。
现在我在macOS共享文件夹之上使用rsync
解决方案(如果您愿意,可以通过SSH使用它)。
我在项目文件夹中的每个项目都有几个shell脚本:
project-name->laptop.sh
project-name->desktop.sh
“笔记本电脑”和“桌面”是我的机器名称。当我需要使用笔记本电脑时,我只需安装共享文件夹(通常我只需打开笔记本电脑)并运行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
是最容易和最稳定的选择。