GraphQL Resolver для получения элемента по имени, а не по идентификатору

«Наш» в Git относится к исходной рабочей ветке, которая имеет авторитетную / каноническую часть истории git.

«Их» относится к версии, которая содержит работу, чтобы быть rebased (изменения будут воспроизведены в текущей ветке).

Возможно, это может быть заменено на людей, которые не знают, что выполнение переустановки (например, git rebase) на самом деле принимает ваш (т. е. их ), чтобы воспроизвести каноническую / основную историю, которая является нашей , потому что мы перестраиваем наши изменения как работу сторонних разработчиков

Документация для git-checkout была дополнительно уточнена в Git> = 2.5.1 в соответствии с f303016 commit :

--ours --theirs

При проверке путей из индекса проверьте этап # 2 ('ours') или # 3 ('theirs') для несвязанных путей.

Обратите внимание, что во время git rebase и git pull --rebase, 'ours' и 'theirs' могут поменяться местами; --ours дает версию из ветви, на которую переупорядочиваются изменения, а --theirs дает версию из ветки, которая хранит вашу работу, которая перестраивается.

Это связано с тем, что rebase используется в рабочий процесс, который рассматривает историю на удаленном компьютере как общую каноническую, и рассматривает работу, проделанную в ветви, которую вы перестраиваете, в качестве сторонней работы, которая должна быть интегрирована, и вы временно принимаете на себя роль хранителя канонической истории во время rebase. Как хранитель канонической истории, вам нужно просмотреть историю с удаленного как ours (т. Е. «Наша общая каноническая история»), а то, что вы делали на своей боковой ветви как theirs (т. Е. «Работа одного автора

Для git-merge это объясняется следующим образом:

ours

Этот параметр заставляет конфликтующие куски быть автоматически разрешенными, предпочитая нашу версию. Изменения от другого дерева, которые не конфликтуют с нашей стороной, отражаются на результате слияния. Для двоичного файла все содержимое взято с нашей стороны.

Это не следует путать с нашей стратегией слияния, которая даже не смотрит на то, что содержит другое дерево. Он отбрасывает все, что делал другое дерево, заявляя, что наша история содержит все, что в нем было.

их

Это противоположность нашей.

Далее, здесь объясняется, как их использовать:

Механизм слияния (команды git merge и git pull) позволяет выбирать стратегии слияния бэкэнда с помощью опции -s. Некоторые стратегии также могут принимать свои собственные параметры, которые могут быть переданы с помощью аргументов -X в git merge и / или git pull.


Поэтому иногда это может запутать , например:

  • git pull origin master, где -Xours является нашей локальной, -Xtheirs является их (удаленной) ветвью
  • git pull origin master -r, где -Xours является их (удаленный), -Xtheirs является нашим

Итак, второй пример противоположный первому, потому что мы перезагружаем нашу ветку поверх удаленного, поэтому наша отправная точка

Аналогично для стратегий git merge (-X ours и -X theirs).

3
задан Paxana Non Grata 30 March 2019 в 21:50
поделиться

1 ответ

Я придумал способ, хотя и немного обманщик.

Когда я создавал ресурс в схеме AppSync, есть раскрывающийся список «дополнительных индексов», и если я сделаю начальный индекс по идентификатору, а затем второй индекс «имя», он создаст запрос с определителем для вы. В моем случае запрос

queryIngredientsByNameIndex(name: String!, first: Int, after: String): IngredientConnection

с резольвером

{
  "version": "2017-02-28",
  "operation": "Query",
  "query": {
    "expression": "#name = :name",
    "expressionNames": {
      "#name": "name",
    },
    "expressionValues": {
      ":name": $util.dynamodb.toDynamoDBJson($ctx.args.name),
    },
  },
  "index": "name-index",
  "limit": $util.defaultIfNull($ctx.args.first, 20),
  "nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.after, null)),
  "scanIndexForward": true,
  "select": "ALL_ATTRIBUTES",
}
0
ответ дан Paxana Non Grata 30 March 2019 в 21:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: