public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-portage-dev] VCS used for development of portage
@ 2010-02-27  3:18 Sebastian Pipping
  2010-02-27  3:27 ` Zac Medico
  0 siblings, 1 reply; 8+ messages in thread
From: Sebastian Pipping @ 2010-02-27  3:18 UTC (permalink / raw
  To: gentoo-portage-dev

Hello!


Is moving portage development over to Git planned anytime soon?
Anything keeping you from the move?

Anything I can do to speed it up?



Sebastian



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] VCS used for development of portage
  2010-02-27  3:18 [gentoo-portage-dev] VCS used for development of portage Sebastian Pipping
@ 2010-02-27  3:27 ` Zac Medico
  2010-03-02 23:22   ` Sebastian Pipping
  0 siblings, 1 reply; 8+ messages in thread
From: Zac Medico @ 2010-02-27  3:27 UTC (permalink / raw
  To: gentoo-portage-dev, robbat2

On 02/26/2010 07:18 PM, Sebastian Pipping wrote:
> Hello!
> 
> 
> Is moving portage development over to Git planned anytime soon?

Yes, we've been discussing it on this bug:

  http://bugs.gentoo.org/show_bug.cgi?id=196025

> Anything keeping you from the move?

Well, the repository layout is somewhat non-trivial, but I think we
have a plan that will work. See discussion on bug 196025.

> Anything I can do to speed it up?

Robbin would know better than me.
-- 
Thanks,
Zac



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] VCS used for development of portage
  2010-02-27  3:27 ` Zac Medico
@ 2010-03-02 23:22   ` Sebastian Pipping
  2010-03-05  3:58     ` Zac Medico
  0 siblings, 1 reply; 8+ messages in thread
From: Sebastian Pipping @ 2010-03-02 23:22 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Robin H. Johnson

Hello!


I've been playing with Git conversions of the portage repository.
The current "demo" conversion from anon SVN is up here:

  http://git.goodpoint.de/?p=portage.git;a=summary

NOTE: Do not use it for development, yet - it's a demo!


At the end you can find the script I made for the conversion.

Notes on the script:
- An author map "portage-author-map.txt" is required, get from [1]
  (Note to zmedico/robbat2: fixed version, do not use the older one)
- If updated, the latest version of this script is up at [2]
- It works with anon SVN and rsync.  For the final run
  - use developer SVN instead
  - be sure to remove --rewrite-root !
- The final repository will be about 22MB in size
- Main conversion takes about two hours on my machine

Next we need to decide on
- a final location (git.overlays.gentoo.org/proj/portage?)
- when we convert (and freeze SVN)
- who runs the final conversion (zmedico, roobat2, me?)



Sebastian

[1] http://www.hartwork.org/public/portage-author-map.txt
[2] http://www.hartwork.org/public/portage-svn-to-git.sh


=================================================================
#!/usr/bin/env bash
starttime=$(date +'%Y-%m-%d--%H-%M-%S')
output_dir="portage-git-repo--${starttime}"

# Open logged subshell
(

# Print executed bash commands
set -x

# Rip/sync anon SVN using rsync
rsync -r rsync://anonvcs.gentoo.org/vcs-public-svnroot/portage/ \
    portage-anon-svn-repo-dump/ || exit 1

# Init git-svn repo, note double use of --trunk
[ -d "${output_dir}" ] && exit 1
git svn init file://${PWD}/portage-anon-svn-repo-dump/ \
    --rewrite-root=svn://anonsvn.gentoo.org/portage/ \
    --trunk=main/trunk --tags=main/tags --branches=main/branches \
    "${output_dir}"
cd "${output_dir}" || exit 1

# Convert commits
git config svn.authorsfile ../portage-author-map.txt
time git svn fetch || exit 1

# Make real Git tags from remotes/tags/* (two special cases)
for branch_tag in $(git branch -r | grep 'tags/' \
    | fgrep -v 'tags/portage-2.1_pre5'); do
  tag=$(sed 's|^tags/||' <<<"${branch_tag}")
  git tag "v${tag}" "remotes/${branch_tag}" || exit 1
done
git tag 'trunk@1888' 'remotes/trunk@1888' || exit 1

# Make local branches from remotes/* (excluding tags and trunk)
for branch in $(git branch -r | grep -v 'tags\|trunk'); do
  git checkout -b "${branch}" "remotes/${branch}" || exit 1
done
git checkout master || exit 1

# Reduce size of repository
dotgitsize() { du --human --total .git | tail -n 1; }
dotgitsize
git gc --aggressive
dotgitsize

# Wipe all traces of SVN
git config --remove-section 'svn-remote.svn'
git config --remove-section 'svn'
rm -R .git/svn
rm -R .git/logs/refs/remotes
for file in .git/info/refs .git/packed-refs ; do
  sed -e '/remotes\//d' -i "${file}"
done

# Hide executed bash commands
set +x


cat <<INFO

DONE.


NEXT STEPS:
  # cd "${output_dir}"

  Verify that branches and tags
  1. make sense
  2. are unambiguous
  3. are free of SVN
    # git branch -a
    # git show-branch --list
    # git tag -l

  Push full repository
    # git remote add \${remote_name} \${push_url}
    # git push --mirror \${remote_name}
INFO

) |& tee conversion--${starttime}.log
#================================================================



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] VCS used for development of portage
  2010-03-02 23:22   ` Sebastian Pipping
@ 2010-03-05  3:58     ` Zac Medico
  2010-03-05 15:33       ` Sebastian Pipping
  0 siblings, 1 reply; 8+ messages in thread
From: Zac Medico @ 2010-03-05  3:58 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: robbat2

On 03/02/2010 03:22 PM, Sebastian Pipping wrote:
> Hello!
> 
> 
> I've been playing with Git conversions of the portage repository.
> The current "demo" conversion from anon SVN is up here:
> 
>   http://git.goodpoint.de/?p=portage.git;a=summary
> 
> NOTE: Do not use it for development, yet - it's a demo!

It looks very nice to me. I noticed that it preserved continuity
when branches got moved around, so the history seems like it will be
fully intact. Great job!
-- 
Thanks,
Zac



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] VCS used for development of portage
  2010-03-05  3:58     ` Zac Medico
@ 2010-03-05 15:33       ` Sebastian Pipping
  2010-03-06  1:30         ` Robin H. Johnson
  0 siblings, 1 reply; 8+ messages in thread
From: Sebastian Pipping @ 2010-03-05 15:33 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: robbat2

On 03/05/10 04:58, Zac Medico wrote:
>>   http://git.goodpoint.de/?p=portage.git;a=summary
>>
>> NOTE: Do not use it for development, yet - it's a demo!
> 
> It looks very nice to me. I noticed that it preserved continuity
> when branches got moved around, so the history seems like it will be
> fully intact. Great job!

Still, maybe we should not jump on this version yet:
- with svn2git we could split it to several repositories easily
  (see [1] for status you on related experiments)
- neither svn2git nor git-svn seem to support proper conversion of
  changes to svn:ignore

Summer of code could help about the latter:
http://en.gentoo-wiki.com/wiki/Google_Summer_of_Code_2010_ideas#Add_support_for_svn:ignore_to_svn2git

But pushing the conversion further into the future could also be a
trade-off reducing efficiency and the number of contributions.

I don't feel like proposing anything on that matter at the moment.  With
that said: what do you and Robin think?



Sebastian


[1] http://bugs.gentoo.org/show_bug.cgi?id=196025#c41



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] VCS used for development of portage
  2010-03-05 15:33       ` Sebastian Pipping
@ 2010-03-06  1:30         ` Robin H. Johnson
  2010-03-07  9:49           ` Robert Buchholz
  0 siblings, 1 reply; 8+ messages in thread
From: Robin H. Johnson @ 2010-03-06  1:30 UTC (permalink / raw
  To: gentoo-portage-dev

On Fri, Mar 05, 2010 at 04:33:14PM +0100, Sebastian Pipping wrote:
> I don't feel like proposing anything on that matter at the moment.  With
> that said: what do you and Robin think?
Here's a related question.

Did the previous CVS -> SVN question generate the svn:ignore files from
.cvsignore, or simply discard them?

In either case, I'm starting to wonder if the change is just trivial
enough to get done in svn2git or git-svn directly. I think other
properties are already there.

-- 
Robin Hugh Johnson
Gentoo Linux: Developer, Trustee & Infrastructure Lead
E-Mail     : robbat2@gentoo.org
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] VCS used for development of portage
  2010-03-06  1:30         ` Robin H. Johnson
@ 2010-03-07  9:49           ` Robert Buchholz
  2010-03-08  1:02             ` Zac Medico
  0 siblings, 1 reply; 8+ messages in thread
From: Robert Buchholz @ 2010-03-07  9:49 UTC (permalink / raw
  To: gentoo-portage-dev

[-- Attachment #1: Type: text/plain, Size: 741 bytes --]

On Saturday 06 March 2010, Robin H. Johnson wrote:
> In either case, I'm starting to wonder if the change is just trivial
> enough to get done in svn2git or git-svn directly. I think other
> properties are already there.

The git-svn man page states that a transformation is not trivial. I 
don't know if in general, svn:ignore is a subset of gitignore. 
Apprarantly, git-svnimport can handle this transformation, but it will 
probably come with other problems.

In my opinion, we should just ignore this small history loss and after 
the git conversion, commit a .gitignore file with the latest ignore 
rules to the active branches. But that is just my opinion, and for the 
actual portage developers to decide.



Robert

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] VCS used for development of portage
  2010-03-07  9:49           ` Robert Buchholz
@ 2010-03-08  1:02             ` Zac Medico
  0 siblings, 0 replies; 8+ messages in thread
From: Zac Medico @ 2010-03-08  1:02 UTC (permalink / raw
  To: gentoo-portage-dev

On 03/07/2010 01:49 AM, Robert Buchholz wrote:
> On Saturday 06 March 2010, Robin H. Johnson wrote:
>> In either case, I'm starting to wonder if the change is just trivial
>> enough to get done in svn2git or git-svn directly. I think other
>> properties are already there.
> 
> The git-svn man page states that a transformation is not trivial. I 
> don't know if in general, svn:ignore is a subset of gitignore. 
> Apprarantly, git-svnimport can handle this transformation, but it will 
> probably come with other problems.
> 
> In my opinion, we should just ignore this small history loss and after 
> the git conversion, commit a .gitignore file with the latest ignore 
> rules to the active branches. But that is just my opinion, and for the 
> actual portage developers to decide.

I think that's reasonable. Mainly, the files that need to be ignored
are *.py[co] and doc/*.html.
-- 
Thanks,
Zac



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-03-08  1:01 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-27  3:18 [gentoo-portage-dev] VCS used for development of portage Sebastian Pipping
2010-02-27  3:27 ` Zac Medico
2010-03-02 23:22   ` Sebastian Pipping
2010-03-05  3:58     ` Zac Medico
2010-03-05 15:33       ` Sebastian Pipping
2010-03-06  1:30         ` Robin H. Johnson
2010-03-07  9:49           ` Robert Buchholz
2010-03-08  1:02             ` Zac Medico

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox