Try fast search NHibernate

02 July 2010

Mercurial problem pushing .Net DLL

This is a story of a pain with an happy end.

As you probably know Mercurial has some nasty problems with large files, even worst when those files are binary. In ConfORM I’m using Mercurial and, as you know, ConfORM work with NHibernate’s trunk. I have to update the Lib folder quite often and I don’t want to find a “workaround” to the Mercurial’s “problem”.

The short story

The story begin fixing NH-2230. After that I have compiled and then actualized ConfORM external libraries and committed in my clone. Then I was working in my clone committing some changes to support the NHibernate new improvement… everything nice and fast.
Before begin the implementation of a new default-pattern-applier I have decided to push all changes to the public repository.

Ok it is easy… only a “push”… the push seems working… working… working… working… working… 30 minutes and still working… working… working…

Ok, my friend!! I suspect you're stuck.

The solution

After Googling and Googling, and mail, and chats, I have found information about PDF (see this wiki).

The solution for .NET projects is add the follows lines to your .hg\hgrc
[merge-patterns]
**.dll = internal:local
**.exe = internal:local
**.pdb = internal:local

The push, before ask you the user&password and after the input of the password, will take a while (few minutes) but at least it work as expected.

UPDATE: The problem was not Mercurial but the push in GoogleCode.

3 comments:

  1. What was the actual problem? How does adding these lines fix it?

    ReplyDelete
  2. What you think ? more than 30 minutes without achieve a push is not a problem ?
    Mercurial, by default, tries a merge of binary files. With that configuration Mercurial will replace the file instead try a merge/diff.

    ReplyDelete
  3. Had pushing doc, odt and pdf documents to mercurial repo, but never experienced this problem

    ReplyDelete