GiT and Edge/Trunk Rails

I have a sub-application project that I had previously converted to edge rails under svn. Originally, vendor/rails was set up with svn:externals so that an svn update at the project's root would pull the latest trunk along with all the other updates. Since Rails has moved to GiT and depreciated svn I decided to remove the svn:externals reference for vendor/rails and reinstall trunk using 'git clone git://github.com/rails/rails.git'.

The question that I have is: what git command does on use to check for/retrieve updates to trunk? Does one simply reissue the git clone command? Is there a simple way (from the command line) to check for updates without pulling them?

The question that I have is: what git command does on use to check for/retrieve updates to trunk? Does one simply reissue the git clone command? Is there a simple way (from the command line) to check for updates without pulling them?

After you've cloned the repos, you can use "git pull" to get the latest updates.

DHH wrote:

The question that I have is: what git command does on use to check for/retrieve updates to trunk? �Does one simply reissue the git clone command? �Is there a simple way (from the command line) to check for updates without pulling them?

After you've cloned the repos, you can use "git pull" to get the latest updates.

Is there a way to run git pull from the project root directory? The example given above works provided that I cd to the vendor/rails directory first. However, if I try this from the project root:

git --work-tree=vendor/rails pull

or this

git --git-dir=vendor/rails pull

then I get this error:

fatal: Not a git repository Failed to find a valid git directory.

On a whim I even tried this:

git pull vendor/rails/.git

but that worked no better than the first two attempts.

I regret if these questions appear naive but I cannot find an answer to them in the documentation, or if answers are there then I do not apprehend them.

You can do something like: git submodule add vendor/rails git submodule init git submodule update

Patrick Aljord wrote:

You can do something like: git submodule add vendor/rails git submodule init git submodule update

Do I have to initialize a git repository in the project root first? If I just follow these instructions then I see this:

fatal: Not a git repository: '.git' You need to run this command from the toplevel of the working tree.

James Byrne wrote:

James Byrne wrote:

Patrick Aljord wrote:

You can do something like: git submodule add vendor/rails git submodule init git submodule update

Do I have to initialize a git repository in the project root first? If I just follow these instructions then I see this:

fatal: Not a git repository: '.git' You need to run this command from the toplevel of the working tree.

Yes, I need to run git init in the root directory first.

However, I do not know if this is a bug in GiT or a misunderstanding I have but:

If I run git submodule update in the project root then git pulls a clone and puts it in a new rails directory immediately under the project root:

[proforma]$ git --version git version 1.5.3.6

[proforma]$ git-config --list user.name=James B. Byrne user.email=byrnejb@harte-lyne.ca color.diff=auto color.status=auto color.branch=auto core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true submodule.rails.url=/home/byrnejb/Software/Development/Projects/proforma/vendor/rails/.git [proforma]$ [proforma]$ ll rails ls: rails: No such file or directory [proforma]$ [proforma]$ git submodule update Initialized empty Git repository in /home/byrnejb/projects/proforma/rails/.git/ 0 blocks Submodule path 'rails': checked out '642bcd2d011ce8c32a0a69bfb4fd6942593584bb' [proforma]$ [proforma]$ ll rails total 88 drwxrwxr-x 4 byrnejb byrnejb 4096 Apr 29 13:11 actionmailer drwxrwxr-x 4 byrnejb byrnejb 4096 Apr 29 13:11 actionpack drwxrwxr-x 4 byrnejb byrnejb 4096 Apr 29 13:11 activemodel drwxrwxr-x 5 byrnejb byrnejb 4096 Apr 29 13:11 activerecord drwxrwxr-x 4 byrnejb byrnejb 4096 Apr 29 13:11 activeresource drwxrwxr-x 4 byrnejb byrnejb 4096 Apr 29 13:11 activesupport -rwxrwxr-x 1 byrnejb byrnejb 105 Apr 29 13:11 cleanlogs.sh -rwxrwxr-x 1 byrnejb byrnejb 484 Apr 29 13:11 pushgems.rb drwxrwxr-x 12 byrnejb byrnejb 4096 Apr 29 13:11 railties -rw-rw-r-- 1 byrnejb byrnejb 559 Apr 29 13:11 Rakefile -rwxrwxr-x 1 byrnejb byrnejb 775 Apr 29 13:11 release.rb

It appears as if I must issue "git submodule update vendor/rails" for this to work the way I desire. Is there something that I should be doing differently?

then do this:

rm -rf vendor/Rails git submodule add git://github.com/rails/rails.git vendor/ git submodule init git submodule update

Patrick Aljord wrote:

then do this:

rm -rf vendor/Rails git submodule add git://github.com/rails/rails.git vendor/ git submodule init git submodule update

$ cd projects/proforma [proforma]$ git-submodule status 642bcd2d011ce8c32a0a69bfb4fd6942593584bb rails (v2.0.0-788-g642bcd2) [proforma]$ rm -rf vendor/rails [proforma]$ git submodule add git://github.com/rails/rails.git vendor/ 'vendor' already exists [proforma]$ git-config --list user.name=James B. Byrne user.email=byrnejb@harte-lyne.ca color.diff=auto color.status=auto color.branch=auto core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true submodule.rails.url=/home/byrnejb/Software/Development/Projects/proforma/vendor/rails/.git [proforma]$ git submodule init [proforma]$ git submodule update [proforma]$ ll vendor total 8 drwxrwxr-x 14 byrnejb byrnejb 4096 Apr 17 16:14 plugins [proforma]$

As shown, these commands do not provide the desired result. the rails directoty is not pulled from the repository. I suppose that I can remove vendor as well and try again but this seems a bit draconian. Am I missing a step?

oops, that should be:

     rm -rf vendor/rails      git submodule add git://github.com/rails/rails.git vendor/rails      git submodule init      git submodule update

Patrick Aljord wrote:

oops, that should be:

     rm -rf vendor/rails      git submodule add git://github.com/rails/rails.git vendor/rails      git submodule init      git submodule update

That seems to have done the trick.

Thank you very much.

Having added a submodule in Git, how does one remove it?

I did this:

  git submodule add add git://github.com/rails/rails.git

When really I should have done this:

  git submodule add add git://github.com/rails/rails.git vendor/rails

Now when I do a git submodule update I keep recreating a rails directory immediately beneath the project root. I cannot seem to find any discussion of removing a submodule from git so, if anyone here knows how it is done, I would be most appreciative learning how.

James Byrne wrote:

Having added a submodule in Git, how does one remove it?

Did not look hard enough, although the answer is a bit obscure:

Edit the file .gitmodules in the git project root directory to remove the unwanted reference.

I need just a little more help in cleaning this up:

James Byrne wrote:

Having added a submodule in Git, how does one remove it?

Did not look hard enough, although the answer is a bit obscure:

Edit the file .gitmodules in the git project root directory to remove the unwanted reference.

Removing the unwanted reference from .gitmodules and from .git/config is not enough. There is a reference to the defunct submodule kept in .git/index. How does one remove that?

I have a project in a remote GiT repository that was imported from a Subversion repository. I git-clone this to my local machine and none of the svn externals are preserved. No surprise there. However, I want to add edge rails as a submodule to my local GiT clone and push this back to the master.

Doing this at the root of the cloned repository does not seem to work:

# git submodule add git://github.com/rails/rails.git vendor/rails # git submodule init # git submodule update # # This does nto seem to accomplish anything: # git-push git-push --all --dry-run Everything up-to-date

James Byrne wrote:

Is there a way to add git submodules to a git-clone and push them back to the master so that future pulls and clones will get them as well?

Yes, do not forget to run git-commit first

One more thing. As of git version 1.5.5.2 git-svnimport is gone. The only way to move from subversion to git is via git-svn.