yikes, okay, never mind :D

this just sounded simpler than “patching rebar”

Best
Jan
—

> On 29. Oct 2020, at 11:18, Ilya Khlopotov <iil...@apache.org> wrote:
> 
> The negative refspec is a recent addition to git. They are available only 
> since 2.29. Which was released less then 2 weeks ago. 
> 
> On 2020/10/29 10:09:13, Jan Lehnardt <j...@apache.org> wrote: 
>> This won’t help you if you already `fetch`’d, but how about suggesting a git 
>> config that folks can apply locally that adds a fetch ref spec that excludes 
>> `archive/`?
>> 
>>> On 29. Oct 2020, at 10:56, Ilya Khlopotov <iil...@apache.org> wrote:
>>> 
>>> Hello,
>>> 
>>> As you've probably know, recently old branches were archived. I tried to 
>>> build a new release locally and was very surprised that it couldn't start. 
>>> After scratching my head for few hours I figured out the following.
>>> I used `git fetch` command without specifying specific branch. This caused 
>>> fetching of archived tags and created additional references:
>>> 
>>> ❯ find .git/refs/tags/archive/ | head
>>> .git/refs/tags/archive/
>>> .git/refs/tags/archive//shard-local-query
>>> .git/refs/tags/archive//fix-reverse-fold-options
>>> .git/refs/tags/archive//experiment-transient-stats
>>> .git/refs/tags/archive//revert-dedup-detection
>>> .git/refs/tags/archive//rebar3
>>> .git/refs/tags/archive//exunit
>>> .git/refs/tags/archive//random-seed-chttpd-pids
>>> .git/refs/tags/archive//developer-preview-2.0
>>> .git/refs/tags/archive//remsh-improvement-3.0.x
>>> 
>>> The presence of additional tags caused the `git describe --always --tags` 
>>> to return something unexpected.
>>> 
>>> ❯ git checkout main
>>> Already on 'main'
>>> Your branch is up to date with 'origin/main'.
>>> 
>>> ❯ git describe --always --tags
>>> archive/prototype/fdb-layer-get-doc-spans-580-gdfb27b48a
>>> 
>>> The `git describe --always --tags` command is used by rebar here 
>>> https://github.com/rebar/rebar/blob/b6d309417c502ca243f810e5313bea36951ef038/src/rebar_utils.erl#L652.
>>>  It is used for applications which have `{vsn, git}` in *.app.src file 
>>> https://github.com/apache/couchdb/blob/main/src/couch/src/couch.app.src#L15
>>> 
>>> The presence of '/' in the result of `git describe --always --tags` changed 
>>> the layout of files in rel/couchdb
>>> in such a way that `code:priv_dir(couch).` doesn't resolve correctly to 
>>> existing directory. This prevents couch from starting.
>>> 
>>> Possible workarounds I can think of
>>> - patch rebar to use `git describe --always --tags --exclude 'archive/*'` 
>>> instead of `git describe --always --tags`
>>> - run `git tag -d (git tag -l "archive/*")` from `make dist`
>>> - write rebar plugin which would handle `{vsn, git}` differently
>>> - use explicit versioning instead of relying on `{vsn, git}`
>>> 
>>> I don't think switching to rebar3 would fix the issue. Because it uses git 
>>> command which would be broken in a similar way:
>>> - rebar3 
>>> https://github.com/erlang/rebar3/blob/5dab01986786f2ffc4ea2b8d34a94177f6f40808/src/rebar_git_resource.erl#L357
>>> ```
>>> ❯ git describe --tags --abbrev=0
>>> archive/prototype/fdb-layer-get-doc-spans
>>> ```
>>> 
>>> To me patching rebar seems like the easiest solution.
>>> 
>>> Best regards,
>>> iilyak
>> 
>> 

Reply via email to