Re: [Zope-dev] Hg mirror available

2009-06-22 Thread Wolfgang Schnerring
Hello,

* Sidnei da Silva sidnei.da.si...@gmail.com [2009-06-19 14:26]:
 On Fri, Jun 19, 2009 at 2:43 AM, Wolfgang Schnerringw...@gocept.com wrote:
 $ svn log repos/project/trunk/feature.txt
 
 r9 | wosc | 2009-06-18 17:11:46 +0200 (Thu, 18 Jun 2009) | 1 line

 merged feature1
 
 r8 | wosc | 2009-06-18 17:11:43 +0200 (Thu, 18 Jun 2009) | 1 line

 implemented feature1
 

 As you can see, Subversion reports the history of the file that
 happenened on the branch (in r8).

 Can you show us your 'svn --version'? I suspect what you're seeing is
 a result of svn 1.5 merge tracking.

I've dug a little deeper, and found that the example I presented is a
special case, since 'feature.txt' has been *added* on the branch, and
Subversion has indeed always treated the history of copied/added/removed
files differently.

You're right that in the general case, Subversion is only able to show
the whole history (including branches) using the 1.5-mergeinfo support.
One can invoke this via 'svn log --use-merge-history': on my example
repository, compare the output for project/trunk/foo.txt with and
without that switch; without it only shows the merge commit.

Hmm. This means that even if conversion tools did something useful with
the mergeinfo properties (which right now they don't), it would only
solve my specific problem of preserving history for the last 6-12 months
or so, since the repository I'm dealing with stems from 2003 or
something, meaning Subversion 1.2ish, which did not even *store* the
information necessary to recover the history.

I guess I'll need to think about this some more (and then move to a
different mailing list, as we're getting way off-topic for zope-dev ;-)

Thanks for your insights,
Wolfgang

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Hg mirror available

2009-06-19 Thread Wichert Akkerman
On 6/19/09 6:28 AM, Balazs Ree wrote:
 - afaik svn does _not_ show this, what's more, it does not store any
 metadata about the merges or changesets involved. When doing the merge
 you really select a diff of the branch by specifying which changesets you
 want to include back in trunk. This is why it's so important with svn to
 note in the commit message, which revisions from which branch you merged.
 Otherwise you would not know at all what has been merged.

Subversion 1.5 and later do store that data in a svn:mergeinfo property.

Wichert.


-- 
Wichert Akkerman wich...@wiggy.net   It is simple to make things.
http://www.wiggy.net/  It is hard to make things simple.
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Hg mirror available

2009-06-19 Thread Sidnei da Silva
Hi Wolfgang,

On Fri, Jun 19, 2009 at 2:43 AM, Wolfgang Schnerringw...@gocept.com wrote:
 Hi there,

 * Sidnei da Silva sidnei.da.si...@gmail.com [2009-06-18 14:28]:
  I'm asking because I noticed that basically all SVN-DVCS conversion
  tools (hg convert, git-svn, bzr svn-import, svn2bzr, svn-fast-export.py,
  svn-all-fast-export.cpp) do not convert the history properly, more
  precisely, history that happened on branches is lost:

 Here's some context about this from one of the Bazaar developers, John
 Arbash Meinel. Hopefully that will solve some of your questions?

 Thanks for relaying!

 I'm not really sure what he means by edit and then merge without a
 commit inbetween. So I'm assuming there is one.

 Sorry for being overly brief in my description; please find below a
 sample shell script to set up a Subversion repository with a project
 containing a trunk and a branch. To reproduce the problem I'm
 concerned about, do this:

 $ create-repos.sh repos
 $ svn log repos/project/trunk/feature.txt
 
 r9 | wosc | 2009-06-18 17:11:46 +0200 (Thu, 18 Jun 2009) | 1 line

 merged feature1
 
 r8 | wosc | 2009-06-18 17:11:43 +0200 (Thu, 18 Jun 2009) | 1 line

 implemented feature1
 

 As you can see, Subversion reports the history of the file that
 happenened on the branch (in r8).

Can you show us your 'svn --version'? I suspect what you're seeing is
a result of svn 1.5 merge tracking.

 After converting the repository, however...

 $ bzr init-repo repos-bzr
 $ cd repos-bzr
 $ bzr svn-import file://$PWD/../repos
 $ bzr log repos/project/trunk/feature.txt
 
 revno: 3
 svn revno: 9 (on /project/trunk)
 committer: wosc
 timestamp: Thu 2009-06-18 14:11:46 +
 message:
  merged feature1

 ... this history is lost. Not only does it not appear in the log
 output, also when looking at bzr visualize it seems like that branch
 never existed at all in bzr. (I'm new to bzr, am I missing something
 here?)

Like John said, it *should* be possible to bring that information over
if the svn repository is in 1.5 format and contains informations about
merge, but at the moment that (apparently) hasn't been implemented.

-- 
Sidnei da Silva
Canonical Ltd.
 Landscape · Changing the way you manage your systems
http://landscape.canonical.com
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Hg mirror available

2009-06-18 Thread Wolfgang Schnerring
* Sebastien Douche sdou...@gmail.com [2009-06-18 01:34]:
 This is a first attempt to build an Mercurial mirror :
 http://hg.zope.mirrors.securactive.org/

How did you convert the repository?

I'm asking because I noticed that basically all SVN-DVCS conversion
tools (hg convert, git-svn, bzr svn-import, svn2bzr, svn-fast-export.py,
svn-all-fast-export.cpp) do not convert the history properly, more
precisely, history that happened on branches is lost:

1. import /trunk/foo.txt
2. branch /trunk to /branches/mybranch
3. edit /mybranch/foo.txt
4. merge /mybranch to /trunk

If you now ask svn for the history of /trunk/foo.txt (say with 'svn
log'), you see both steps 3 and 4. After conversion to a DVCS with one
of the above mentioned tools, you only see step 4, while step 3 never
happened in the DVCS repository. I think that's unacceptable, most
importantly because all commit messages that happened on branches are
lost that way.

Does somebody here know something about this phenomenon, by any chance?
Am I missing something?

Wolfgang

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Hg mirror available

2009-06-18 Thread Sidnei da Silva
Hi Wolfgang,

On Thu, Jun 18, 2009 at 7:31 AM, Wolfgang Schnerringw...@gocept.com wrote:
 * Sebastien Douche sdou...@gmail.com [2009-06-18 01:34]:
 This is a first attempt to build an Mercurial mirror :
 http://hg.zope.mirrors.securactive.org/

 How did you convert the repository?

 I'm asking because I noticed that basically all SVN-DVCS conversion
 tools (hg convert, git-svn, bzr svn-import, svn2bzr, svn-fast-export.py,
 svn-all-fast-export.cpp) do not convert the history properly, more
 precisely, history that happened on branches is lost:

 1. import /trunk/foo.txt
 2. branch /trunk to /branches/mybranch
 3. edit /mybranch/foo.txt
 4. merge /mybranch to /trunk

 If you now ask svn for the history of /trunk/foo.txt (say with 'svn
 log'), you see both steps 3 and 4. After conversion to a DVCS with one
 of the above mentioned tools, you only see step 4, while step 3 never
 happened in the DVCS repository. I think that's unacceptable, most
 importantly because all commit messages that happened on branches are
 lost that way.

 Does somebody here know something about this phenomenon, by any chance?
 Am I missing something?

Here's some context about this from one of the Bazaar developers, John
Arbash Meinel. Hopefully that will solve some of your questions?


In pretty much all dvcs merging a content exactly back to trunk does not
generate a change message when doing bzr log foo.txt.

I'm not really sure what he means by edit and then merge without a
commit inbetween. So I'm assuming there is one.

Now, what really matters is whether or not *Subversion* recorded 4
correctly, such that it can actually see that it was a merge from 3.

My understanding is that before svn 1.5 that isn't possible. So you are
left with trying to infer that sort of thing from the history. Which
would be possible, but probably expensive.

I'm pretty sure SVN represents (4) as not a *merge* but as an indentical
commit.

I don't have a great answer there. Though the fact that Wolfgang says
svn shows both... I suppose because svn log shows everything across
all branches?


-- 
Sidnei da Silva
Canonical Ltd.
 Landscape · Changing the way you manage your systems
http://landscape.canonical.com
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Hg mirror available

2009-06-18 Thread Balazs Ree
On Thu, 18 Jun 2009 14:28:13 -0300, Sidnei da Silva wrote:

 Hi Wolfgang,
 
 On Thu, Jun 18, 2009 at 7:31 AM, Wolfgang Schnerringw...@gocept.com
 wrote:
 * Sebastien Douche sdou...@gmail.com [2009-06-18 01:34]:
 This is a first attempt to build an Mercurial mirror :
 http://hg.zope.mirrors.securactive.org/

 How did you convert the repository?

 I'm asking because I noticed that basically all SVN-DVCS conversion
 tools (hg convert, git-svn, bzr svn-import, svn2bzr,
 svn-fast-export.py, svn-all-fast-export.cpp) do not convert the history
 properly, more precisely, history that happened on branches is lost:

 1. import /trunk/foo.txt
 2. branch /trunk to /branches/mybranch 3. edit /mybranch/foo.txt
 4. merge /mybranch to /trunk

 If you now ask svn for the history of /trunk/foo.txt (say with 'svn
 log'), you see both steps 3 and 4. After conversion to a DVCS with one
 of the above mentioned tools, you only see step 4, while step 3 never
 happened in the DVCS repository. I think that's unacceptable, most
 importantly because all commit messages that happened on branches are
 lost that way.

 Does somebody here know something about this phenomenon, by any chance?
 Am I missing something?
 
 Here's some context about this from one of the Bazaar developers, John
 Arbash Meinel. Hopefully that will solve some of your questions?
 
 
 In pretty much all dvcs merging a content exactly back to trunk does not
 generate a change message when doing bzr log foo.txt.
 
 I'm not really sure what he means by edit and then merge without a
 commit inbetween. So I'm assuming there is one.
 
 Now, what really matters is whether or not *Subversion* recorded 4
 correctly, such that it can actually see that it was a merge from 3.
 
 My understanding is that before svn 1.5 that isn't possible. So you are
 left with trying to infer that sort of thing from the history. Which
 would be possible, but probably expensive.
 
 I'm pretty sure SVN represents (4) as not a *merge* but as an indentical
 commit.
 
 I don't have a great answer there. Though the fact that Wolfgang says
 svn shows both... I suppose because svn log shows everything across
 all branches?
 

I'm somewhat confused here. According to my understanding:

- all DVCS shows, if a merge is done, the changesets that origin from the 
merged branch. (this is the normal operation)

- afaik svn does _not_ show this, what's more, it does not store any 
metadata about the merges or changesets involved. When doing the merge 
you really select a diff of the branch by specifying which changesets you 
want to include back in trunk. This is why it's so important with svn to 
note in the commit message, which revisions from which branch you merged. 
Otherwise you would not know at all what has been merged.

So although, DVCS could represent the information about the merged 
changesets, this information will not be imported from SVN, simply, 
because the information is not represented in SVN.

I'd like to add that I'm not using Hg, I am only using bazaar and svn, 
and I'm talking from what I experienced in practice with working on 
various svn repos and bzr. It's possible that newer svn does try to 
attack this problem by storing more metadata with the merges, which then 
would make sense to be considered at a DVCS import, but I believe that in 
the vast majority of svn repositories that you would consider importing, 
this information would not be there anyway, due to the fact that they are 
product of the older svn version.

-- 
Balazs Ree

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Hg mirror available

2009-06-18 Thread Wolfgang Schnerring
Hi there,

* Sidnei da Silva sidnei.da.si...@gmail.com [2009-06-18 14:28]:
  I'm asking because I noticed that basically all SVN-DVCS conversion
  tools (hg convert, git-svn, bzr svn-import, svn2bzr, svn-fast-export.py,
  svn-all-fast-export.cpp) do not convert the history properly, more
  precisely, history that happened on branches is lost:
 
 Here's some context about this from one of the Bazaar developers, John
 Arbash Meinel. Hopefully that will solve some of your questions?

Thanks for relaying!
 
 I'm not really sure what he means by edit and then merge without a
 commit inbetween. So I'm assuming there is one.

Sorry for being overly brief in my description; please find below a
sample shell script to set up a Subversion repository with a project
containing a trunk and a branch. To reproduce the problem I'm
concerned about, do this:

$ create-repos.sh repos
$ svn log repos/project/trunk/feature.txt

r9 | wosc | 2009-06-18 17:11:46 +0200 (Thu, 18 Jun 2009) | 1 line

merged feature1

r8 | wosc | 2009-06-18 17:11:43 +0200 (Thu, 18 Jun 2009) | 1 line

implemented feature1


As you can see, Subversion reports the history of the file that
happenened on the branch (in r8).

After converting the repository, however...

$ bzr init-repo repos-bzr
$ cd repos-bzr
$ bzr svn-import file://$PWD/../repos
$ bzr log repos/project/trunk/feature.txt

revno: 3
svn revno: 9 (on /project/trunk)
committer: wosc
timestamp: Thu 2009-06-18 14:11:46 +
message:
  merged feature1

... this history is lost. Not only does it not appear in the log
output, also when looking at bzr visualize it seems like that branch
never existed at all in bzr. (I'm new to bzr, am I missing something
here?)

 Now, what really matters is whether or not *Subversion* recorded 4
 correctly, such that it can actually see that it was a merge from 3.
 My understanding is that before svn 1.5 that isn't possible.

My understanding is quite different. ;-)
As far as I know, SVN always has recorded the history of a file
across copies and merges, and so I'm quite sure this has nothing to do
with 1.5-style merge tracking. I won't try to track down a reference
on that right now, but I'm currently reading up on SVN's APIs so I
expect to find the answer there, anyway.

 I'm pretty sure SVN represents (4) as not a *merge* but as an indentical
 commit.

As I said, I'm still digging through the SVN APIs, so unfortunately I
don't have a concrete answer, but I know positively that this history
information is readily available, which you can see by passing
--verbose to 'svn log':

$ svn log -v -c 9 repos

r9 | wosc | 2009-06-18 17:11:46 +0200 (Thu, 18 Jun 2009) | 1 line
Changed paths:
   M /project/trunk
   A /project/trunk/feature.txt (from /project/branches/feature1/feature.txt:8)
  ^
   M /project/trunk/foo.txt

merged feature1


Wolfgang


**

#!/bin/sh

if [ $# -lt 1 ]; then
  echo 12 Usage: $0 repos-path
  exit 1
fi

set -e

mkdir $1
repos=$(cd $1  pwd)
rmdir $1

working=$(tempfile)
rm $working
mkdir $working

svnadmin create $repos
svn mkdir file://$repos/project -m creating project home
svn mkdir file://$repos/project/trunk -m creating trunk
svn mkdir file://$repos/project/branches -m creating branches
svn mkdir file://$repos/project/tags -m creating tags
svn co file://$repos/project/trunk $working
cd $working

mkdir alpha
echo foo  foo.txt
echo bar  alpha/bar.txt
svn add foo.txt alpha
svn commit -m initial version

svn cp file://$repos/project/trunk file://$repos/project/tags/0.1 -m tagging 
0.1

svn cp file://$repos/project/trunk file://$repos/project/branches/feature1 -m 
creating branch 1
svn switch file://$repos/project/branches/feature1
echo qux  foo.txt
echo feature1  feature.txt
svn add feature.txt
svn commit -m implemented feature1

svn switch file://$repos/project/trunk
svn merge file://$repos/project/branches/feature1
svn commit -m merged feature1
svn rm file://$repos/project/branches/feature1 -m remove branch after merge

svn cp file://$repos/project/trunk file://$repos/project/tags/0.2 -m tagging 
0.2

svn cp file://$repos/project/trunk file://$repos/project/branches/feature2 -m 
creating branch 2
svn switch file://$repos/project/branches/feature2
echo feature2  feature.txt
svn commit -m implemented feature 2

rm -rf $working
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 

[Zope-dev] Hg mirror available

2009-06-17 Thread Sebastien Douche
This is a first attempt to build an Mercurial mirror :
http://hg.zope.mirrors.securactive.org/

- Size
SVN 2.13go
Hg 780mo
Hg (only trunk for each package) 440mo

- co (only last commit)
SVN
s...@wiener:~$ time svn co svn://svn.zope.org/repos/main/zope.component/trunk
...
real0m5.158s
user0m0.028s
sys 0m0.996s

Hg (all commits, it's a clone)
s...@wiener:~$ time hg clone
http://hg.zope.mirrors.securactive.org/zope.component/
...
real0m3.394s
user0m0.280s
sys 0m0.552s


Improvments
---
- mapping of svn user / full name  email (hg convention)
- a description for each project


What do you think?

Hope this help everybody to understand the benefits of DVCS and
leverage facility to submit a patch.




-- 
Sebastien Douche sdou...@gmail.com
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )