helpSavannah Administration - Support: sr #110378, request Git repo set up for GNU...


sr #110378: request Git repo set up for GNU Superopt

Submitted by:  Thien-Thi Nguyen <ttn>
Submitted on:  Tue 17 Nov 2020 02:07:43 AM UTC  
Category:  Source code repositories - developer access Priority:  5 - Normal
Severity:  3 - Normal Status:  In Progress
Assigned to:  Bob Proulx <rwp> Operating System:  None
Open/Closed:  Open

Add a New Comment (Rich Markup)

You are not logged in

Please log in, so followups can be emailed to you.


( Jump to the original submission)

Sat 06 Feb 2021 01:12:41 PM UTC, comment #9: 

Sorry for the long delay in response.

I intend the 'p' branch to be the default one.  How do i set that up?

Thien-Thi Nguyen <ttn>
Sat 30 Jan 2021 04:27:49 AM UTC, comment #8: 

Ping?  Has there been an update on the git repository for GNU Superopt?  I look and I still see the same problem now as before.  It has an "archive" branch and a "p" branch but neither of those match the default clone branch.

Adding to my previous instructions, after a clean clone in a fresh directory one will see the following remote branches.

$ git branch -a

But no active branch and no default branch.  In order to switch to either the "archive" or "p" branches above one can simply check them out.

$ git checkout p
Switched to branch 'p'
Your branch is up to date with 'origin/p'.

Bob Proulx <rwp>
Site AdministratorIn charge of this item.
Sat 26 Dec 2020 10:51:19 PM UTC, comment #7: 

> Thanks.  Everything is fine, now, w/ these instructions.

Great!  Good to hear that things are better.  And I see that code has been pushed.  However I also see that there is a problem that needs to be fixed.  There are only two branches and those are "archive" and "p" branches.  Neither of those seem to be an intended main trunk master branch type of branch.  However the default branch at initial upload was set to the "master" branch, which does not exist.  And therefore when doing a pristine clone checkout there is no default branch to set as the default.  So something is amiss.

Were one of those branches intended to be the master copy branch?  Or is that still in process of happening?

> Strangely enough, i used instructions on that page to try to push previously,
> w/ the remote in the form of:
> Perhaps that is no longer a valid syntax?  In any case, i will close this
> issue shortly.  Thanks again.

The git tools recognize a URL for the repository.  Being a URL as you know there are many forms available for it.  The man page for git-clone includes the following explanation that instead of doing a poor summary I would just include verbatim.  But in summary I will say that ssh:// is the canonical URL syntax and is the scp-like alternative syntax and both are effectively equivalent.  Also is the canonical of which is an official alternative.

       In general, URLs contain information about the transport protocol, the
       address of the remote server, and the path to the repository. Depending
       on the transport protocol, some of this information may be absent.

       Git supports ssh, git, http, and https protocols (in addition, ftp, and
       ftps can be used for fetching, but this is inefficient and deprecated;
       do not use it).

       The native transport (i.e. git:// URL) does no authentication and
       should be used with caution on unsecured networks.

       The following syntaxes may be used with them:

       o   ssh://[user@]host.xz[:port]/path/to/repo.git/

       o   git://host.xz[:port]/path/to/repo.git/

       o   http[s]://host.xz[:port]/path/to/repo.git/

       o   ftp[s]://host.xz[:port]/path/to/repo.git/

       An alternative scp-like syntax may also be used with the ssh protocol:

       o   [user@]host.xz:path/to/repo.git/

       This syntax is only recognized if there are no slashes before the first
       colon. This helps differentiate a local path that contains a colon. For
       example the local path foo:bar could be specified as an absolute path
       or ./foo:bar to avoid being misinterpreted as an ssh url.

And so we see the description of the URL syntaxes including the scp-like syntax.  It's personal preference as it is a client interpreted string.  I prefer the syntax with the protocol on the front because I think it is both more self-documenting and also easier to edit on the fly to one of the other different protocols.

However note that the path used by each of the protocols happens to be incrementally different for all three.  That's unfortunate but an implementation detail of how each has been implemented.  ssh is a real shell login command and sees the actual /srv/git path.  https/http share the web server namespace with svn, hg, bzr, cvs and needs at least the /git path to select that namespace.  The anonymous but dedicated git:// protocol is the only one that does not have a namespacing leading directory because git is all that the git-daemon does.  And so all three paths are slightly different of necessity.

I'll mention that the ftp protocol is not supported at Savannah.

The git upstream documentation goes on to mention this following too.

       The ssh and git protocols additionally support ~username expansion:

       o   ssh://[user@]host.xz[:port]/~[user]/path/to/repo.git/

       o   git://host.xz[:port]/~[user]/path/to/repo.git/

       o   [user@]host.xz:/~[user]/path/to/repo.git/

I'll mention that Savannah does not support ~[user] syntax, please don't use it.  The actuality is that it does exist but the path to the user home directory is an accident of implementation and one that might change and likely will change in the future.

And the documention continues with more detail that is well worth exploring too.

And just finishing this that I await your information on the default branch for git so as to understand how things should be set up for a clean checkout.

Bob Proulx <rwp>
Site AdministratorIn charge of this item.
Sat 26 Dec 2020 01:24:53 AM UTC, comment #6: 

> Let us know if this works for you.

Thanks.  Everything is fine, now, w/ these instructions.

> There is additional documentation in the
> page.

Strangely enough, i used instructions on that page to try to push previously, w/ the remote in the form of:

Perhaps that is no longer a valid syntax?  In any case, i will close this issue shortly.  Thanks again.

Thien-Thi Nguyen <ttn>
Tue 22 Dec 2020 11:18:45 PM UTC, comment #5: 

Since you have a git repository for your source all you need to do is to push it and publish it to Savannah git repository.

Let's assume you want "origin" to be Savannah.  In that case delete any previous origin and set it again.  Or choose a different name such as "upstream".  Names are arbitrary.  But for the traditional "origin" this would delete the previous and set a new one.  And then push your repository there.

git remote rename origin oldorigin  # if existing
git remote rm origin  # if existing and want it removed

Then add the new origin and push to it.

git remote add origin ssh://
git push -u origin master

If you are using a different branch than master for what you want to publish, such as "main" or whatever then substitute that in the above. And the same if using "upstream" or whatever instead of origin.  Names are arbitrary.

Then it is a good idea to test that all is well.  I suggest doing a clone in another location as a verification step.

These are three of the several possible alternate ways to clone.

git clone ssh://
git clone
git clone git://

Let us know if this works for you.  There is additional documentation in the page.

Bob Proulx <rwp>
Site AdministratorIn charge of this item.
Sun 20 Dec 2020 11:13:44 PM UTC, comment #4: 

Sorry, i guess i'm still not being clear.  Here's the situation: GNU Superopt was developed and maintained in the 1990s, long before savannah was set up.  It went unmaintained until a few years ago, when i volunteered to take over maintenance duties.  At that point, someone (cannot recall) sent me superopt-2.5.tar.gz.  Since then, i've created a local (on my machine) Git repo and done work on it there.  It was only recently (in the last few months) that i felt it was time to roll up a release, and wanted to first get the source onto savannah, etc.  The Superopt project on savannah had been "set up" (i suppose) by someone and so my request was/is to have its source repo set to Git (via "git init" somewhere?) so that i can (finally) push my changes to it.  It currently has no source code.

Earlier, i enabled Git as suggested by ineiev and tried to push, but received an error.  That's why i requested help from you folks, to do whatever is necessary so that the "git push savannah p" works ("p" is the branch i work on, normally, not "master").

If there's something else i need to do, please let me know.  Thanks for looking into this.

Thien-Thi Nguyen <ttn>
Sun 20 Dec 2020 08:46:25 PM UTC, comment #3: 

Your question catches me really confused.  If you are the maintainer then I think I can't be faulted for expecting that you would be the best person to know where the source code to the package you are maintaining resides!  And if you don't know then who would know?  Certainly not us.  Where is your source code?

Bob Proulx <rwp>
Site AdministratorIn charge of this item.
Sat 19 Dec 2020 05:57:50 AM UTC, comment #2: 

Sorry, i was not clear earlier.
There is no current CVS repo to convert (AFAICT).

I tried following the instructions anyway and saw:

$ LANG=C git cvsimport -A ../.authors.txt -p x -v superopt
Initialized empty Git repository in /home/ttn/build/GNU/superopt/.git/
Running cvsps...
cvs_direct initialized to CVSROOT /sources/superopt
cvs rlog: Logging superopt
DONE; creating master branch
fatal: refs/heads/origin: not a valid SHA1
fatal: master: not a valid SHA1
fatal: You are on a branch yet to be born
checkout failed: 32768

What do i do now?

Thien-Thi Nguyen <ttn>
Thu 26 Nov 2020 10:43:38 AM UTC, comment #1: 

Enable Git on the "Select features" page of your Savannah group; then, please check "Importing from CVS" in

Ineiev <ineiev>
Site Administrator
Tue 17 Nov 2020 02:07:43 AM UTC, original submission:  

Could you please change the source code repository from CVS to Git for GNU Superoptimizer?  I'd like to populate the repo w/ source code.

Thien-Thi Nguyen
GNU Superoptimizer maintainer

Thien-Thi Nguyen <ttn>


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -email is unavailable- added by rwp (Posted a comment)
  • -email is unavailable- added by ineiev (Posted a comment)
  • -email is unavailable- added by ttn (Submitted the item)

    Do you think this task is very important?
    If so, you can add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.




    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2021-01-29 ineiev Assigned toineiev => rwp
    2020-11-26 ineiev StatusNone => In Progress
        Assigned toNone => ineiev

    Back to the top

    Powered by Savane 3.5