Вы должны управлять этим, основываясь на структуре вашего проекта, а не на том, как Git справится с этим.
Первый вопрос, который вы должны задать себе: если вы внесете изменение в myProject/Server/MyUtilities.java
, сделаете ли вывсегда хотите внести одно и то же изменение в myProject/AndroidApp/MyUtilities.java
?
Если это так, то это логически один файл, который используется в двух разных местах, и вы должны поместить его в общую область и сослаться на него, откуда вынадо.
И ты можешь передумать позже;если вы обнаружите, что AndroidApp
нужна другая версия, вы всегда можете изменить положение вещей.
Как я уже сказал, не беспокойтесь о Git.Внутренне файлы в Git-хранилище хранятся в зависимости от их содержимого;имя файла - это контрольная сумма sha1 содержимого файла.(Это не так просто, но почти так.) Если два файла совпадают, Git сохранит одну копию и при необходимости будет обращаться к ней.Если вы измените одну копию, ссылки будут обновлены, но более старая версия, к которой вы все еще можете получить доступ, по-прежнему ссылается на одну копию.Конечно, у вас будет две копии в вашей рабочей области, но сам Git хранит только одну.
Символические ссылки - заманчивая идея, и они, безусловно, могут быть полезны (а Git обрабатывает символические ссылки), но я думаю,что либо сохранение двух копий файла, либо помещение одной копии в общий каталог, вероятно, будет лучшим решением.
РЕДАКТИРОВАТЬ: Чтобы уточнить, что я предлагаю, я думаю, чтолучший подход - иметь только одну копию любых логических файлов - без дубликатов, без символических ссылок.
Например, вы можете создать новый каталог Common
, содержащий MyUtilities.java
:
myProject/Common/MyUtilities.java
myProject/Server/ServerFoo.java
myProject/AndroidApp/AndroidBar.java
Я не очень хорошо знаком с Java, но я полагаю, что он дает вам некоторый способ ссылаться на вещи в другом файле, не располагая этим файлом в том же каталоге.Другими словами, вам вообще не нужно myProject/Server/MyUtilities.java
, ни в качестве копии, ни в виде символической ссылки;просто обратитесь к myProject/Common/MyUtilities.java
из myProject/Server/ServerFoo.java
.
Это имеет больше смысла?