Search code examples
mercurialmercurial-server

dotencode property through mercurial-server issue


Just want to notice: this issue is only about sharing mercurial using mercurial-server

Steps to reproduce:

  1. create new repository with hg init
  2. try to clone it through mercurial-server:

    hg clone ssh://[email protected]/test2 .
    remote: abort: There is no Mercurial repository here (.hg not found)!
    прервано: no suitable response from remote hg!
    
  3. edit .hg/requires file, remove dotencode property

  4. repeat step 2:

    hg clone ssh://[email protected]/test2 .
    изменений не найдено
    updating to branch default
    0 files updated, 0 files merged, 0 files removed, 0 files unresolved
    

Any ideas why it is happening and how I could fix it?

ps: it is mercurial 1.9 installed, and the command is performed from the same machine.


Solution

  • That happened because:

    1. I had mercurial site-packages installed in both /usr (new, from 1.9) and /usr/local (old, from 1.6). And hg-ssh had taken the old ones.

    2. hg-ssh needs to be patched a little

      dispatch.dispatch(['init', repo])
      

      should be replaced with

      dispatch.dispatch(dispatch.request(['init', repo]))
      

      and

      dispatch.dispatch(['-R', repo, 'serve', '--stdio'])
      

      with

      dispatch.dispatch(dispatch.request(['-R', repo, 'serve', '--stdio']))
      

      accordingly