savannah-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [savannah-help-public] Gnuspeech - git repository


From: Assaf Gordon
Subject: Re: [savannah-help-public] Gnuspeech - git repository
Date: Fri, 18 Sep 2015 11:30:06 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

Hello David and all,

Few comments, hopefully helpful:

Regarding "histories":

The histories in this context is the commit logs of the existing project,
i.e. the date, author, and diff to the source code files.
You can see the current history (of the SVN repo) by doing:
    svn co svn://svn.sv.gnu.org/gnuspeech
    cd gnuspeech/
    svn log | less

If you decide to copy the files as is, and start a new git repository,
those entries will not be preserved in the git repository.
When someone will do "git log", the first entry will be
you (presumably) on Sept-2015 committing all the files.

Depending on your POV, it might be perfectly acceptable to 'reset' the history,
start fresh, and mention in a README that all previous commits are available 
from the
(now stale) SVN repository. You can keep the SVN (and CVS) repositories 
available forever on Savannah.

Alternatively, there are tools to import an existing CVS/SVN repository into a 
GIT repository.
The advantage: you preserve the rich and detailed commit history.
The disadvantage: the repository is not started in a 'clean' state which allows 
you to carefully determine what goes in (everything that was in the SVN will be 
in it initially).

IMHO there's no one "correct" approach here, it's a decision you'll need to 
make.

---

Regarding multiple independent git repositories and submodules:

I agree with previous commenters, you can decide to have:
1. one big repository with everything
2. multiple git repositories, but keep them completely independent
3. multiple git repositories, and set them as git submodules.
Each has its own advantages and disadvantages.

The "guix" example I wrote about - is case #2.
The related guix repositories (eg. guix/dhcp.git) are related just by being under the 
"guix" directory.
Users can pick-and-choose which repository they are interested in.

Example of case #3 is GNU coreutils, which uses gnulib as a git-submodule.
If a user runs:
    $ git clone --recursive git://git.sv.gnu.org/coreutils.git
It will also pull files from the submodule at git://git.sv.gnu.org/gnulib.git

Again, IMHO there's no "correct" answer.

---

Regarding experimentation:
Yes, the best option is to experiment (current with another, non-savannah 
service).
That is simply because on these services you can create and delete repositories 
over and over again,
until you are pleased with the result.

But in the grand scheme of things,
pushing a bad commit to savannah is not the end of the world.
It simply means you'll need to push another commit, undoing the previous one.
The main disadvantage is that you end-up with a messy repository (and 
potentially a very large one).
(Other hosting services allow you to do a "force push" or non-fast-forward 
commit, which literally removes the bad commit from the history.
This is cleaner, but opens the door to code removal. Savannah does not allow 
it).

regards,
 - assaf




reply via email to

[Prev in Thread] Current Thread [Next in Thread]