多台机器上的Apple XCode(如何随身携带我的项目?)

时间:2017-12-07 19:17:15

标签: xcode macos

我主要在Mac桌面上开发iOS应用程序,但有时我使用MacBook Air笔记本电脑旅行,我经常需要在旅途中继续使用应用程序。

当然,可以将文件scp到我的笔记本电脑,处理它,然后将其刻录到桌面,或者使用拇指驱动器。但我必须相信成千上万的人有类似的需求。有没有一种简单的方法来共享源代码控制,只是在旅途中签入/签出?

在多个设备上进行流畅的单一开发人员跟踪开发的最佳实践是什么?

2 个答案:

答案 0 :(得分:3)

使用免费的BitBucket帐户,结合SourceTree。除了能够在多台计算机上使用它之外,您还可以免费进行版本控制和备份。

答案 1 :(得分:2)

我不确定这个问题属于这里,但嘿,我自己问,所以这些都是我的做法。我不会称之为“最好”的做法,只是我多年来尝试过的东西:

GIT中

使用git存储库。我猜你已经在使用它,如果没有,创建一个存储库(在Bitbucket你可以免费获得私人存储库)。即使您使用其他内容来同步计算机,也要这样做。

有很多方法可以使用git来保持桌面和笔记本电脑的同步。如果执行正确的提交并不容易(即,您正处于重大变更的中间,并且您不希望仅在非意义提交日志下提交所有内容),则可以使用预定的消息编写一次丢弃提交** SYNC **,然后将其推送到您的遥控器。

在您的笔记本电脑中,进行拉动和软重置,以便在提交之前进行更改:git reset HEAD^

当您返回桌面时,请执行上次提交git reset --hard HEAD^的硬重置并提取更改。

根据我的经验,

不是最好的解决方案:过渡桌面/笔记本电脑应该快速而轻松。考虑要做什么以及如何因为你需要更换机器这一点很痛苦。

Resilio Sync

使用Bittorrent Resilio Sync同步台式机和笔记本电脑之间的多个文件夹(如果您对安全性感到偏执,可以将其配置为仅使用LAN)。

它工作了一段时间,非常好,但不知何故它破了,我不想调查原因,因为我怀疑它会在以后再次破裂。

收存箱

当我懒惰时,使用Dropbox同步两台计算机。它工作正常。如果你还是信任Dropbox。

与其他云提供商相同(除了非常缓慢的iCloud)。

SSD卡

直接在SSD卡中工作。它足够快;只是确保你没有将构建写入卡。显然,你需要在两台计算机上都有一个读卡器。不是一个长期的解决方案。

Mac Apps

在计算机之间同步文件夹的专用mac应用程序。他们都没有完美无瑕地工作。有些太复杂,或者没有维护,或者是可怕的Windows端口等等。我买了一个简单的工作,并清楚地传达了它在幕后的作用。

的Rsync

使用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是最容易和最稳定的选择。