{"thread":{"id":"21741","subject":"git-subtree: directory mismatch","startedAt":"2009-11-24T19:53:53Z","lastAt":"2009-11-25T23:45:22Z","messageCount":12,"participants":["Marc Fournier","Avery Pennarun","Nanako Shiraishi","Junio C Hamano","Johannes Schindelin","Björn Steinbrink"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"128260","messageId":"20091124195353.GA16627@lonquimay.wrk.lsn.camptocamp.com","threadId":"21741","inReplyTo":null,"subject":"git-subtree: directory mismatch","fromName":"Marc Fournier","fromEmail":"marc.fournier@camptocamp.com","sentAt":"2009-11-24T19:53:53Z","receivedAt":"2009-11-24T19:53:53Z","isPatch":false,"sender":{"key":"marc.fournier@camptocamp.com","avatar":null},"body":"Hi,\n\nI've come across this weird behaviour using git-subtree: when updating a\ndirectory created by git-subtree, the content of some (almost) random\nneighbour directory gets replaced, instead of the directory specified by\n\"git-subtree --prefix\".\n\n\nmkdir /tmp/testrepo\ncd /tmp/testrepo\ngit init .\nmkdir -p modules/cognac/{manifests,files}\nmkdir -p modules/cognac/manifests/{classes,definitions}\ntouch modules/cognac/README modules/cognac/manifests/classes/foo.pp\nmodules/cognac/manifests/definitions/bar.pp modules/cognac/files/blabla\ngit add modules/\ngit commit -m \"test\"\n\ngit remote add mapserver git://github.com/camptocamp/puppet-mapserver.git\ngit remote update\ngit-subtree add --prefix modules/mapserver 97f5985b # an older commit\n\n# So far so good, I have 2 subdirectories in modules/ with completely\n# different content.\n\n# Then, the content of modules/cognac/ gets completely replaced by the\n# content of HEAD from git://github.com/camptocamp/puppet-mapserver.git.\n# modules/mapserver still contains the content of commit 97f5985b.\n\ngit-subtree pull --prefix modules/mapserver mapserver master\n\n>From git://github.com/camptocamp/puppet-mapserver\n * branch            master     -> FETCH_HEAD\nRemoving modules/cognac/files/blabla\nRemoving modules/cognac/manifests/classes/foo.pp\nRemoving modules/cognac/manifests/definitions/bar.pp\nMerge made by subtree.\n modules/cognac/files/apt-preferences               |    3 +\n modules/cognac/files/epsg.C2C                      | 5445 ++++++++++++++++++++\n modules/cognac/files/epsg.legacy                   | 5445 ++++++++++++++++++++\n modules/cognac/files/epsg.minimal                  |   14 +\n modules/cognac/files/etc/apt/preferences-20070910  |    3 +\n modules/cognac/files/etc/apt/preferences-20080225  |   35 +\n modules/cognac/files/etc/apt/preferences-v5-2      |   35 +\n modules/cognac/manifests/classes/epsg.pp           |   21 +\n .../cognac/manifests/classes/mapserver-debian.pp   |   82 +\n modules/cognac/manifests/classes/v5.pp             |   46 +\n modules/cognac/manifests/init.pp                   |    8 +\n 11 files changed, 11137 insertions(+), 0 deletions(-)\n create mode 100644 modules/cognac/files/apt-preferences\n delete mode 100644 modules/cognac/files/blabla\n create mode 100755 modules/cognac/files/epsg.C2C\n create mode 100755 modules/cognac/files/epsg.legacy\n create mode 100644 modules/cognac/files/epsg.minimal\n create mode 100644 modules/cognac/files/etc/apt/preferences-20070910\n create mode 100644 modules/cognac/files/etc/apt/preferences-20080225\n create mode 100644 modules/cognac/files/etc/apt/preferences-v5-2\n create mode 100644 modules/cognac/manifests/classes/epsg.pp\n delete mode 100644 modules/cognac/manifests/classes/foo.pp\n create mode 100644 modules/cognac/manifests/classes/mapserver-debian.pp\n create mode 100644 modules/cognac/manifests/classes/v5.pp\n delete mode 100644 modules/cognac/manifests/definitions/bar.pp\n create mode 100644 modules/cognac/manifests/init.pp\n\nI was not able to reproduce this bug in any of the following cases:\n - if the README file wasn't empty\n - if modules/cognac is renamed to something else\n - if modules/cognac doesn't have the same sub-directories than\n   modules/mapserver\n\nThis bug happens using git 1.5.5.6 as well as 1.6.5. It seems to happen\nwhen git-subtree calls \"git merge -s subtree\".\n\nMaybe something is broken in this puppet-mapserver.git repository I use ?\nI've encountered the same problem with other directories too.\n\nAny idea ?\n\nThanks !\nMarc\n"},{"id":"128263","messageId":"32541b130911241348s21e21fb8n12edf374e6a3c309@mail.gmail.com","threadId":"21741","inReplyTo":"20091124195353.GA16627@lonquimay.wrk.lsn.camptocamp.com","subject":"Re: git-subtree: directory mismatch","fromName":"Avery Pennarun","fromEmail":"apenwarr@gmail.com","sentAt":"2009-11-24T21:48:26Z","receivedAt":"2009-11-24T21:48:26Z","isPatch":false,"sender":{"key":"apenwarr@gmail.com","avatar":"https://avatars.githubusercontent.com/u/20592?v=4"},"body":"On Tue, Nov 24, 2009 at 2:53 PM, Marc Fournier\n<marc.fournier@camptocamp.com> wrote:\n> I was not able to reproduce this bug in any of the following cases:\n>  - if the README file wasn't empty\n>  - if modules/cognac is renamed to something else\n>  - if modules/cognac doesn't have the same sub-directories than\n>   modules/mapserver\n>\n> This bug happens using git 1.5.5.6 as well as 1.6.5. It seems to happen\n> when git-subtree calls \"git merge -s subtree\".\n\nYup.  This is basically a bug in \"git merge -s subtree\": it guesses\nwhich subtree to merge into, rather than actually taking a prefix\nparameter.  I've been meaning to either submit a patch for this, or\nfind a way to work around it.\n\nThis doesn't usually happen once your project is relatively mature\n(ie. doesn't have blank or \"default\" template files in it) since then\nthe auto-guessing gets more reliable.  But there's no good reason to\ndo the auto-guessing, so it would be best to do this \"properly.\"\n\nSorry that I haven't had time to fix it yet...\n\nAvery\n"},{"id":"128267","messageId":"20091125080812.6117@nanako3.lavabit.com","threadId":"21741","inReplyTo":"32541b130911241348s21e21fb8n12edf374e6a3c309@mail.gmail.com","subject":"Re: git-subtree: directory mismatch","fromName":"Nanako Shiraishi","fromEmail":"nanako3@lavabit.com","sentAt":"2009-11-24T23:08:12Z","receivedAt":"2009-11-24T23:08:12Z","isPatch":false,"sender":{"key":"nanako3@lavabit.com","avatar":"https://gravatar.com/avatar/3777b9e201c5883a62b1a6fdf7c53f2d712d1d80989146063ea861e33aad72a8?d=mp&s=160"},"body":"Quoting Avery Pennarun <apenwarr@gmail.com>\n\n> Yup.  This is basically a bug in \"git merge -s subtree\": it guesses\n> which subtree to merge into, rather than actually taking a prefix\n> parameter.  I've been meaning to either submit a patch for this, or\n> find a way to work around it.\n\nProbably you can save time by using what was already done\n\nhttp://thread.gmane.org/gmane.comp.version-control.git/76650/focus=89021\n\n\n\n-- \nNanako Shiraishi\nhttp://ivory.ap.teacup.com/nanako3/\n"},{"id":"128313","messageId":"20091125143204.GA9834@lonquimay.wrk.lsn.camptocamp.com","threadId":"21741","inReplyTo":"32541b130911241348s21e21fb8n12edf374e6a3c309@mail.gmail.com","subject":"Re: git-subtree: directory mismatch","fromName":"Marc Fournier","fromEmail":"marc.fournier@camptocamp.com","sentAt":"2009-11-25T14:32:04Z","receivedAt":"2009-11-25T14:32:04Z","isPatch":false,"sender":{"key":"marc.fournier@camptocamp.com","avatar":null},"body":"On Tue, Nov 24, 2009 at 04:48:26PM -0500, Avery Pennarun wrote:\n> On Tue, Nov 24, 2009 at 2:53 PM, Marc Fournier\n> <marc.fournier@camptocamp.com> wrote:\n> > I was not able to reproduce this bug in any of the following cases:\n> >  - if the README file wasn't empty\n> >  - if modules/cognac is renamed to something else\n> >  - if modules/cognac doesn't have the same sub-directories than\n> >   modules/mapserver\n> >\n> > This bug happens using git 1.5.5.6 as well as 1.6.5. It seems to happen\n> > when git-subtree calls \"git merge -s subtree\".\n> \n> Yup.  This is basically a bug in \"git merge -s subtree\": it guesses\n> which subtree to merge into, rather than actually taking a prefix\n> parameter.  I've been meaning to either submit a patch for this, or\n> find a way to work around it.\n\nI see. What sort of criteria does git-merge use to do this auto-guessing ?\n\nI'm hoping to find a way to workaround this problem. I have a couple of\nsubtrees I'm completely unable to update. The best I found is:\n\"git rm -fr ...\" followed by \"git subtree add ...\" again.\n\n> This doesn't usually happen once your project is relatively mature\n> (ie. doesn't have blank or \"default\" template files in it) since then\n> the auto-guessing gets more reliable.  But there's no good reason to\n> do the auto-guessing, so it would be best to do this \"properly.\"\n\nThe thing is I use dozens of different \"modules\" in my project, all merged\ninto using git-subtree. All these modules have the same structure, and most\nof them have quite minimal content and won't really evolve more. In my\ncase, evolution will mean adding even more modules.\n\nIf I understand the thread Nanako Shiraishi pointed us to, a patch\nimplementing a prefix to \"git merge -s subtree\" is available somewhere but\nhasn't been added in any official release yet ?\n\nMarc\n"},{"id":"128326","messageId":"32541b130911251028h6db240d5yd171fa4941ef14ba@mail.gmail.com","threadId":"21741","inReplyTo":"20091125080812.6117@nanako3.lavabit.com","subject":"Re: git-subtree: directory mismatch","fromName":"Avery Pennarun","fromEmail":"apenwarr@gmail.com","sentAt":"2009-11-25T18:28:52Z","receivedAt":"2009-11-25T18:28:52Z","isPatch":false,"sender":{"key":"apenwarr@gmail.com","avatar":"https://avatars.githubusercontent.com/u/20592?v=4"},"body":"On Tue, Nov 24, 2009 at 6:08 PM, Nanako Shiraishi <nanako3@lavabit.com> wrote:\n> Quoting Avery Pennarun <apenwarr@gmail.com>\n>\n>> Yup.  This is basically a bug in \"git merge -s subtree\": it guesses\n>> which subtree to merge into, rather than actually taking a prefix\n>> parameter.  I've been meaning to either submit a patch for this, or\n>> find a way to work around it.\n>\n> Probably you can save time by using what was already done\n>\n> http://thread.gmane.org/gmane.comp.version-control.git/76650/focus=89021\n\nHi Nanako,\n\nI've read through the thread (I do remember skimming it awhile ago)\nbut can't find patches for the syntax actually under discussion.  I\nfound a patch that introduces \"-s theirs\", which was summarily shot\ndown in favour of adding -X support, but I can't find any actual patch\nfor this.  Moreover, git-merge seems to have been ported to C since\nthen, so I guess it wouldn't apply anyway.  And I can't find any\nimplementation at all for the discussed \"-Xsubtree=\" option, which I'm\nguessing didn't actually ever get done.\n\nAm I missing something?  It looks fairly easy to throw in anyway, but\nit's even easier if someone has already done it :)\n\nThanks,\n\nAvery\n"},{"id":"128328","messageId":"7v7htexuxc.fsf@alter.siamese.dyndns.org","threadId":"21741","inReplyTo":"32541b130911251028h6db240d5yd171fa4941ef14ba@mail.gmail.com","subject":"Re: git-subtree: directory mismatch","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-11-25T19:31:59Z","receivedAt":"2009-11-25T19:31:59Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Avery Pennarun <apenwarr@gmail.com> writes:\n\n>> Probably you can save time by using what was already done\n>>\n>> http://thread.gmane.org/gmane.comp.version-control.git/76650/focus=89021\n>\n> Hi Nanako,\n>\n> I've read through the thread (I do remember skimming it awhile ago)\n> but can't find patches for the syntax actually under discussion.\n\nI very much prefer gmane threading when following discussion over all the\nother mail archives, but this shows one thing I really dislike about it.\n\nIt is not easy to find a near-by thread when looking at an old article,\nand you have to be willing to bisect the page number at the right hand\nside of the web UI.  Often a patch series is posted as a separate thread\nafter a discussion reaches conclusion or identifies an issue to solve, and\nthe real patch series lives in a near-by thread.  Very inconvenient.\n\nI don't know how Nana digs up older discussion; maybe she knows better\nways.\n\nIn my primary repository, I have an archive of mothballed branches kept\nwith this alias:\n\n    [alias]\n    hold = \"!sh -c 'git update-ref refs/hold/$1 refs/heads/$1 && git branch -D $1' -\"\n\nand found this series in there.  It applies to v1.6.0-rc0~245 (no, I won't\nbe rebasing this myself---I don't have time for that while preparing for\nthe pre-release feature freeze).\n\n    f7713ce Document that merge strategies can now take their own options\n    7eda236 Make \"subtree\" part more orthogonal to the rest of merge-recursive.\n    e416d61 Teach git-pull to pass -X<option> to git-merge\n    09f7d22 Teach git-merge to pass -X<option> to the backend strategy module\n    904288c git-merge-recursive-{ours,theirs}\n    e0aafb4 git-merge-file --ours, --theirs\n    -d3e977b Merge branch 'maint'\n\nLook at http://github.com/gitster/git/commits/jc/merge-theirs/\n"},{"id":"128332","messageId":"32541b130911251148v70a5dc77k9936881d0b382ec2@mail.gmail.com","threadId":"21741","inReplyTo":"7v7htexuxc.fsf@alter.siamese.dyndns.org","subject":"Re: git-subtree: directory mismatch","fromName":"Avery Pennarun","fromEmail":"apenwarr@gmail.com","sentAt":"2009-11-25T19:48:13Z","receivedAt":"2009-11-25T19:48:13Z","isPatch":false,"sender":{"key":"apenwarr@gmail.com","avatar":"https://avatars.githubusercontent.com/u/20592?v=4"},"body":"On Wed, Nov 25, 2009 at 2:31 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> Avery Pennarun <apenwarr@gmail.com> writes:\n>> I've read through the thread (I do remember skimming it awhile ago)\n>> but can't find patches for the syntax actually under discussion.\n>\n> I very much prefer gmane threading when following discussion over all the\n> other mail archives, but this shows one thing I really dislike about it.\n[...]\n> Look at http://github.com/gitster/git/commits/jc/merge-theirs/\n\nI also tried simply searching for things like 'git \"-xsubtree\"' in\ngoogle, with no luck.  But thanks for the link.\n\n> and found this series in there.  It applies to v1.6.0-rc0~245 (no, I won't\n> be rebasing this myself---I don't have time for that while preparing for\n> the pre-release feature freeze).\n\nI did a test merge and it looks like a ton of conflicts, but they seem\nto be pretty understandable ones, at least.  I don't mind doing the\nrebase and resubmitting the patches, since it's sure less work than\nfiguring out how to do it from scratch myself.  Some questions though:\n\n- What was the reason this never got merged?  What changes are needed\nto rectify that?\n\n- Considering the earlier discussion, do we want to leave out the\nactual -Xtheirs feature and just have -Xours and -Xsubtree?\n\n- If I rebase them and the changes turn out to be minimal, do they\nstill need a signed-off-by Junio?  (He obviously owns part of the\ncopyright and has previously signed off, but he also won't have signed\noff the rebased patches verbatim, so I'm confused.)\n\nThanks,\n\nAvery\n"},{"id":"128335","messageId":"7vpr76uzju.fsf@alter.siamese.dyndns.org","threadId":"21741","inReplyTo":"32541b130911251148v70a5dc77k9936881d0b382ec2@mail.gmail.com","subject":"Re: git-subtree: directory mismatch","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-11-25T20:20:21Z","receivedAt":"2009-11-25T20:20:21Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Avery Pennarun <apenwarr@gmail.com> writes:\n\n>> Look at http://github.com/gitster/git/commits/jc/merge-theirs/\n>\n> I also tried simply searching for things like 'git \"-xsubtree\"' in\n> google, with no luck.  But thanks for the link.\n\nI didn't _find_ the link ;-)  I just pushed it out a few minutes ago,\nafter looking for strings that appear in messages of these commits.  The\nseries was done over a few weeks, and would have been very painful to find\nfrom the gmane archive.\n\n> - What was the reason this never got merged?  What changes are needed\n> to rectify that?\n\nI do not remember there was any real reason.  I do remember some people\ndidn't like -X<option> syntax but I don't think there was any solid\ncounterproposal to achieve a similar goal to satisfy the need to pass\narbitrary parameters to the merge strategy backends.\n\n> - Considering the earlier discussion, do we want to leave out the\n> actual -Xtheirs feature and just have -Xours and -Xsubtree?\n\nBoth -Xtheirs and -Xours have the same degree of badness in the context of\n\"source code management\", but there was a real-world use case that would\nhave benefitted from -Xours recently.\n\n  cf. http://thread.gmane.org/gmane.comp.version-control.git/131902/focus=132920\n\nIf -Xours goes in, so should -Xtheirs, I think, because Peter's \"web tree\"\nexample could merge in both ways (i.e. he could be pulling from web tree\ninto his private area and then cleaning things up before pushing the\nresult back).\n\n> - If I rebase them and the changes turn out to be minimal, do they\n> still need a signed-off-by Junio?\n\n\"minimal\" by definition means that you ased your work on mine and I still\nhave the copyright to the change as a co-author together with you.  We\nboth need to certify that the change is made under DCO.\n"},{"id":"128365","messageId":"alpine.DEB.1.00.0911260013550.4985@pacific.mpi-cbg.de","threadId":"21741","inReplyTo":"7vpr76uzju.fsf@alter.siamese.dyndns.org","subject":"Re: git-subtree: directory mismatch","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-11-25T23:17:45Z","receivedAt":"2009-11-25T23:17:45Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 25 Nov 2009, Junio C Hamano wrote:\n\n> I do remember some people didn't like -X<option> syntax but I don't \n> think there was any solid counterproposal to achieve a similar goal to \n> satisfy the need to pass arbitrary parameters to the merge strategy \n> backends.\n\nI took exception to the awkward way to specify the option.  A strong hint \njust how awkward -X<option> is: it is hard to implement using \nparse-options.\n\nThere is no real reason to do it properly, i.e. with an option \n--merge-option <option> or --backend-option <option> or -X <option> (even \nif \"-X\" is not really an expressive name, to be real honest).\n\nBTW the same goes for -S<string>, but unfortunately, we have to keep it \nto maintain backwards compatibility.\n\nCiao,\nDscho\n"},{"id":"128366","messageId":"32541b130911251520l7a84554bxab9cf59ff9d8fc1@mail.gmail.com","threadId":"21741","inReplyTo":"alpine.DEB.1.00.0911260013550.4985@pacific.mpi-cbg.de","subject":"Re: git-subtree: directory mismatch","fromName":"Avery Pennarun","fromEmail":"apenwarr@gmail.com","sentAt":"2009-11-25T23:20:45Z","receivedAt":"2009-11-25T23:20:45Z","isPatch":false,"sender":{"key":"apenwarr@gmail.com","avatar":"https://avatars.githubusercontent.com/u/20592?v=4"},"body":"On Wed, Nov 25, 2009 at 6:17 PM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n> On Wed, 25 Nov 2009, Junio C Hamano wrote:\n>> I do remember some people didn't like -X<option> syntax but I don't\n>> think there was any solid counterproposal to achieve a similar goal to\n>> satisfy the need to pass arbitrary parameters to the merge strategy\n>> backends.\n>\n> I took exception to the awkward way to specify the option.  A strong hint\n> just how awkward -X<option> is: it is hard to implement using\n> parse-options.\n\nI read the earlier thread and I still don't quite understand this\npoint.  What makes it difficult?  X seems just like any other option\nthat takes a string parameter (which is easily supported by getopt at\nleast; I haven't played with parse_options but I certainly hope it's\nas good as getopt).\n\nThe string parameter (say, $x) is translated directly into \"--$x\" and\npassed as exactly one argument of the argv array to the subprogram.\nEasy, right?  Plus Junio already wrote a patch to do it (which I'm in\nthe process of forward-porting) and it seems pretty straightforward.\n\nPerhaps I'm missing something.\n\nThanks,\n\nAvery\n"},{"id":"128373","messageId":"20091125234122.GA31422@atjola.homenet","threadId":"21741","inReplyTo":"32541b130911251520l7a84554bxab9cf59ff9d8fc1@mail.gmail.com","subject":"Re: git-subtree: directory mismatch","fromName":"Björn Steinbrink","fromEmail":"b.steinbrink@gmx.de","sentAt":"2009-11-25T23:41:22Z","receivedAt":"2009-11-25T23:41:22Z","isPatch":false,"sender":{"key":"b.steinbrink@gmx.de","avatar":"https://avatars.githubusercontent.com/u/230962?v=4"},"body":"On 2009.11.25 18:20:45 -0500, Avery Pennarun wrote:\n> On Wed, Nov 25, 2009 at 6:17 PM, Johannes Schindelin\n> <Johannes.Schindelin@gmx.de> wrote:\n> > On Wed, 25 Nov 2009, Junio C Hamano wrote:\n> >> I do remember some people didn't like -X<option> syntax but I don't\n> >> think there was any solid counterproposal to achieve a similar goal to\n> >> satisfy the need to pass arbitrary parameters to the merge strategy\n> >> backends.\n> >\n> > I took exception to the awkward way to specify the option.  A strong hint\n> > just how awkward -X<option> is: it is hard to implement using\n> > parse-options.\n> \n> I read the earlier thread and I still don't quite understand this\n> point.  What makes it difficult?\n\nI guess it's -Xfoo vs. -X foo (note the space). Same deal with log\n-S<string>. \"git log -S foo\" would look for an empty string (I guess)\nbeing added/removed in some commit in foo's history, while \"git log\n-Sfoo\" looks for \"foo\" being added/remove in HEAD's history.\n\nBjörn\n"},{"id":"128375","messageId":"32541b130911251545x212cc55el9f8d4bc44eadd45b@mail.gmail.com","threadId":"21741","inReplyTo":"20091125234122.GA31422@atjola.homenet","subject":"Re: git-subtree: directory mismatch","fromName":"Avery Pennarun","fromEmail":"apenwarr@gmail.com","sentAt":"2009-11-25T23:45:22Z","receivedAt":"2009-11-25T23:45:22Z","isPatch":false,"sender":{"key":"apenwarr@gmail.com","avatar":"https://avatars.githubusercontent.com/u/20592?v=4"},"body":"2009/11/25 Björn Steinbrink <B.Steinbrink@gmx.de>:\n> On 2009.11.25 18:20:45 -0500, Avery Pennarun wrote:\n>> I read the earlier thread and I still don't quite understand this\n>> point.  What makes it difficult?\n>\n> I guess it's -Xfoo vs. -X foo (note the space). Same deal with log\n> -S<string>. \"git log -S foo\" would look for an empty string (I guess)\n> being added/removed in some commit in foo's history, while \"git log\n> -Sfoo\" looks for \"foo\" being added/remove in HEAD's history.\n\nOh.  Ouch.  Isn't it standard for options-that-take-string-parameters\nto always *require* that parameter?  This seems to be how getopt\nworks.  Basically \"-X foo\" is the same as \"-Xfoo\" in that system.\n\nIf parse_options doesn't already do this, should I try to add it somehow?\n\nAvery\n"}]}