2014-09-02 20:41 GMT+04:00 Mark Thomas <ma...@apache.org>:
> I've been looking at this again (anything to get a break from writing
> parsers for cookies) and chatting with some of the infra folks that look
> after the ASF's git repos.
>
> There are a couple of things we need to do:
> a) decide how we want to organise development in git
> b) decide if we want to move to git
>
> Now the decision we make for a) might influence some folks to make a
> different decision for b). On the other hand, there is no point debating
> a) if we are never going to move.
>
> So, how do folks want to approach this?
> A: Vote to move to git and then figure out how best to use it? or
> B: Agree our git workflows and then have a vote on moving to git with
> those workflows?
>
> I'm leaning towards A myself.

We shall discuss the workflows and our expectations first.

In July I successfully configured Git to operate on the same set of
files as Subversion, on Windows.

That is: I have a sparse subversion workng copy  that spans the whole
of site/trunk, tc6.0.x/trunk, tc7.0.x/trunk and trunk,  and I have
".git" directories in each of the branches.

It works. If both Git and Subversion data are up-to-date, the "status"
command in both shows no changes (except an occasional uncommitted
bin/tcnative-1.dll that is used to run JUnit tests with APR).

As such, I use Git to prepare sets of changes and use Subversion
client to commit them when they are ready.

Technical bits:
========
1. I am using TortoiseGit (64-bit) and msysGit (32-bit).

2. I cloned the repositories from git://git.apache.org/

3. I have not initialized "git-svn" on this repository. I do not use it.

4. I have eol-conversion options turned off (the default) and I have
.git/info/attributes  files in my local repositories that configure
Git to apply "text" attribute to the same set of files that are
treated as textual (<patternset id="text.files" >) in build.xml,  the
same ones that have svn:eol-style=native in Subversion.

5. To pull fresh changes one has to update both subversion wc and
local git repository. Both "svn, git" and "git, svn" update sequences
do work successfully.

I prefer "svn, git", because it works a bit better and because git
repository lags behind subversion one.

6. To update the local trunk branch in Git according to master
repository the following works:
a) "Git Sync" command in TortoiseGit, using "Fetch and Rebase" operation there
b) In command line (Git Shell) it maps to the following sequence of commands:
    git stash -u
    git pull --rebase --verbose
    git stash pop

Impressions etc.
========
1. Such workflow works. It is great for building up experience with the tool.

It also allows us to discuss Mark's "a) decide how we want to organise
development in git"  point, without actually moving to Git.

I think I can document it on a Wiki page, if others are interested.

I used this workflow to prepare some patches when I had no network
access (traveling on a train across some sticks) and to commit them
when I had access.


2. An annoying fact is that the Git repository at git.apache.org lags
for up to one hour behind the Subversion one.

The symptoms are as if the "git svn pull" is performed via some cron
job, instead of a postcommit hook or svn-pub-sub.  I wonder whether
the Infra team can make it work better.


3. I would like to commit my ".git/info/attributes" file as
".gitattributes" into Subversion.

My concerns before committing it:
a) If any of you are using Git on Windows, such commit probably means
that you have to "git checkout trunk" a fresh set of files so that
they get CRLF line ends applied from this setting.

b) I do not know whether this interoperates with git-svn, if any of
you are using it. We may give it a try and rollback later.  In any
case, if there is anything wrong, a local ".git/info/attributes" file
can be used to overwrite the setting, as it has precedence over the
repository-provided ".gitattributes" one.

Documentation:
https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

At the same time. I think it would be good to commit an svn:auto-props
property that applies svn:eol-style=native for the same set of files
for Subversion clients.

By the way Apache Subversion project configured a svn:auto-props
property for their project today,
http://svn.apache.org/r1621946


4. My impression is that Git works slower.

Maybe it is no so optimized, has less optimal database structure, or
does more work.

5. I think that now I will be able to continue working on Tomcat if we
migrate to Git,
but I am not yet convinced that it is worth moving,
and several issues listed below have to be fixed before the move.

My points from the previous thread on this topic:
http://markmail.org/message/m7ig5a7wunyewdy6

Areas where we depend on Subversion and need to implement a fix before the move:
1). There is svn externals reference from Tomcat Native to Tomcat Trunk.

(Does it mean that we have to migrate TC Native to Git at the same time?
Can we remove this svn externals reference?)

2). svn revision numbers are used by the config difference form in the
Migration guide.
http://tomcat.apache.org/migration-8.html#Upgrading_8.0.x

(Is it possible to replace it with links to similar Git tools, e.g. to
"compare" pages on GitHub? Does HTML GUI at git.apache.org have
similar history and compare pages?)

3). The plan to create a Maven build (BZ 56397) relies on svn externals.

(I think it is time to abandon the idea.)

6. Maybe move away modules/bayeux  and modules/tomcat-lite  ?


Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to