move git repository and files from Ubuntu to OS-X - macos

I've been using Git on my Linux (Ubuntu) machine to track changes to C++ code.
Now, i'm working on Mac (OS-X 10.8), so i though i will just copy the whole folder of sources together with .git from Linux to Mac.
However, that does not lead to anything good. Git lists me huge number of modified files, i guess all of them.
I'm not sure, but i guess that might have something to do with the line endings in Linux and OS-X. So, what is the correct sequence of actions i should do in such situation to have a smooth transfer from one OS to another?
Thanks in advance,
Denis.
EDIT
solved the issue by setting
filemode=false in .git/config
is it the proper solution? I don't quite understand what caused a problem?
EDIT2
forgot to mention, the original repository is cloned from "git://..."
EDIT3
apparently, the problem was that i used a USB flash drive to carry things from one os to another, and did not thought that it could make my life harder :) coppied everything again from scratch without USB and the problem is gone.

Assuming that you have ssh access to your account on the Ubuntu machine, I suggest cloning over ssh:
$ git clone ssh://user#ubuntu-machine/path/to/git/repo
By using the actual git clone operation on your Mac OS X machine you shouldn't run into any problems.
For reference, the GIT URLS section of the git-clone man page has all the URL format of all possible git transports.

Related

How can I prevent git corruption on linux virtual machine?

I have a virtual machine (Virtual Box) on a Windows host running Linux on the guest.
I have a git repo on the client with file sharing set up with Samba in such a way that it's in my Network Locations.
I run SourceTree as my git client from my Windows host to affect the repo on the VM.
The issue is that every once in a while, the git objects on my guest get corrupted. I have already found (and keep finding) ways to fix the git repo after it's corrupted. I have fixed it, and it works. The issue is that the fix removes my uncommitted changes so I have to back up every time.
My question is, how, if possible, can I PREVENT the corruption of those git objects?
It should be noted that:
I don't force-shut down the VM.
I have tried turning off auto-refresh in Source-Tree.
I am aware that I can back up the git files at the end of every work session and avoid losing progress like that but that's annoying.
I am open to any suggestions.
Working with two different git executables (one for Windows and one for Linux) on the same repository sounds like a bad idea.
Git is by design a distributed VCS, so you can take advantage of that. Just have one clone of the repository in your Windows filesystem, and one in your Linux VM. then have a bare repo (git init --bare) on your Linux VM where you can push your work and pull work from the other repo. Use ssh from the Windows host to push changes, not samba. Be aware that while it is possible to directly push between two non-bare repositories, it is not recommended (for example, you cannot push to the current branch of a non-bare repository).
If, by any chance, you have access to a web-based git service (GitHub, gogs, GitLab, …), you can also use that for pushing and pulling.

SVN + Dropbox: sync project on Windows and Mac

I'm new to SVN so please be patient with my (maybe weird) question.
I have been working on a project with SVN on Windows 7 using Tortoise and WAMP for developing on my local machine.
As all the project is inside my Dropbox folder I'm wondering if there's a way to work on this even on my mac laptop with OSX Lion when I'm away from home (using xCode or whatever) and maintain consistency on both systems.
I read on the web about syncing xcode project with dropbox on several macs, but can it be done between windows and osx?
The idea with SVN is that you have a host where you push your code to. This host runs an svn server which manages your code and is able to distribute the code to multiple clients and accept changes from these clients. So if you have an SVN server somewhere, you don't need to use DropBox at all - just checkout your code from the server on your Mac and you can work on it and push changes to your server. On your Windows system, you can then just update your copy and get the latest changes that you pushed from your Mac.
If, however, you are using a local SVN server which stores your repository in your dropbox folder, things are a bit different. First thing to say: I would never do that. Second thing: You'd have to configure an SVN server on your OSX system to use the repository in your Dropbox folder the same way the server you configured on your Windows system does. If I ever needed to use a setup like that, I would never use SVN for it. A decentralized version control system like git or Mercurial is much better suited to handle this setup, because you don't need to have a server running - you can just sync between the DropBox folder and your local copy.
Why not use git? If you're new, don't bother learning something that's obsolete.
Be aware that different IDEs (XCode on OSX vs. whatever you're using on Win7) may mangle your line endings everytime you save from that computer.
Git has decent support for this sort of problem:
What's the best CRLF (carriage return, line feed) handling strategy with Git?
Finally, I'm not sure how you expect to "share" the project between two different build systems.
If you have a Makefile for your Windows build, you can make it a cross-platform one. See this:
makefile custom functions

Is there a good way to work with a remote git repo in Windows?

I want to be able to use Windows-based development tools (e.g. Winmerge, Eclipse, etc.) on a repo sitting on a remote Linux machine. With my current setup, I issue git commands in a shell via VNC, and therefore use the Linux-based tools -- kdiff3, gitk, gedit, etc. I do have access to all elements in the repo (source, .git/, etc.) via a Samba share. With this share -- mapped to a Windows network drive -- I work with whatever version my current git branch is pointing to.
Is there a Windows-based solution that works with a remote repo (say, over SSH) that allows me to execute the majority of my workflow (checkout, commit, diff, merge, etc.)?
Have you tried msysgit? Its a cygwin mingw based git client for Windows. I used it while I was using Windows and it works fairly well.
GitExtensions is a Windows GUI around msysgit, mentioned by Chaitanya. It has drawbacks but allows most Git operations to work in a graphical interface. I use it since I switched to Git.
You can use TortoiseGit to manage a clone of the repo right on your local machine. Your IDE should then be able to perform git operations directly on it. (Well, NetBeans can at least, I'm not an Eclipse user, so I'm not sure what git support it has built-in.)
MsysGit and the Git Gui are pretty effective from Windows. Start here
I have found that they do all the basics pretty well, and then I swap over to a git bash window [a git/unix version of a DOS cmd window, though more powerful] for the more specialist commands.
It has worked quite effectively and doesn't need any great expertise.

How to setup PC and Mac for using git

I use git both for Mac and PC.
When pulling Mac's git from PC, it's easy as I can use ssh.
git clone smcho#prosseek:~/smcho/setup
The problem happens the other way round : to pull from Mac. I guess there are two ways to go.
Method 1 : Connect to server
By using 'connect to server' in Mac, I can make PC's directory like that of Mac. Even though, the file permission issue, it works pretty well.
Method 2 : ssh
I could run cygwin ssh server (cygrunsrv -S sshd) to be accessed from other computers, but for me, I have to wait quite a while to get connection as I explained here. It's almost impossible for to use it with git, as I don't want to wait for minutes to get clone.
Here comes my question.
Is there any better way other than the previous two methods?
Is there a (natural) way to support ssh server from Windows (windows 7 precisely) not using cygwin?
I've started using the philosophy of trying to stick in the native environment that something is designed for.
With that in mind, my windows box has an ubuntu server virtual machine that hosts my git repositories. The nice thing is the linux + virtual box + git is an awesome source repository that is completely free. No extra machine and you can give it very little memory so it isn't a resource hog.
There is even another option:
If you use both computers for developing and just want to keep the repositories in sync, you could create a bare repository and use something like Dropbox to synchronize it.
I see two other solutions :
using a third synchronisation server: GitHub, the most famous (if your program is OpenSource), but you can also find free online private Git repositories
on Windows, you can set up the Git server ('git daemon' command). On MAC, you'll access to the Windows repository using the URL git://ip_of_windows_machine/repository/
You might consider another approach entirely. If you're using git as a revision control system that you might consider a hosted account for mastering your repository, maintaining backups, etc. http://github.com/ is the leader in the space for git.

Setup a Git server with msysgit on Windows [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
My friends and I are trying to setup Git for Windows using the tutorial Git Server: Gitosis and Cygwin on Windows, but we just keep running into problems.
What would a "Setup Git Server" guide for Windows using msysgit be like?
There is a comment in the tutorial above suggesting it can't be done with msysgit because gitosis requires the use of an SSH Server and Bash? What is a step by step guide (as there is not one available)?
Install mysisgit
?
I found this post and I have just posted something on my blog that might help.
See Setting up a Msysgit Server with copSSH on Windows. It's long, but I have successfully got this working on Windows 7 Ultimate x64.
Bonobo Git Server for Windows
From the Bonobo Git Server web page:
Bonobo Git Server for Windows is a web application you can install on
your IIS and easily manage and connect to your git repositories.
Bonobo Git Server is a open-source project and you can find the
source on github.
Features:
Secure and anonymous access to your git repositories
User friendly web interface for management
User and team based repository access management
Repository file browser
Commit browser
Localization
Brad Kingsley has a nice tutorial for installing and configuring Bonobo Git Server.
GitStack
Git Stack is another option. Here is a description from their web site:
GitStack is a software that lets you setup your own private Git server
for Windows. This means that you create a leading edge versioning
system without any prior Git knowledge. GitStack also makes it super
easy to secure and keep your server up to date. GitStack is built on
the top of the genuine Git for Windows and is compatible with any
other Git clients. GitStack is completely free for small teams1.
1 the basic edition is free for up to 2 users
With regards to the reference to the Tim Davis page - Setting up a Msysgit Server with copSSH on Windows - I used this to get a Git server running on Windows 7 Home Premium 64.
Below is a postmortem/update of what I learned in addition to his instructions.
Like Tim Davis said, this was an arduous and frustrating process, at least for me - I'm not too good with integration of this sort, but I learned alot in the process. I hope my pain benefits someone else in the future, because this was an arduous process.
There is a step to copy all the Git
executables into your CopSsh bin
directory. Instead of copying files
and figuring out which files are
needed, add the git bin path to your
git path. I did so by modifying my
.bashrc and CopSsh profile.
Here's what I added to .bashrc (in your CopSsh and Windows home directory):
gitpath='/cygdrive/c/Program Files (x86)/Git/bin'
gitcorepath='cygdrive/c/Program Files (x86)/Git/libexec/git-core'
PATH=${gitpath}:${gitcorepath}:${PATH}
Here's what I added to the bash profile (in CopSsh etc/profile):
gitpath='/c/Program Files (x86)/Git/bin'
gitcorepath='cygdrive/c/Program Files (x86)/Git/libexec/git-core'
export PATH="/bin:$syspath:$gitpath:$gitcorepath:$winpath"
There is some duplication here - it works for me, so someone chime in which is the correct place to modify the path.
The newer msysgit versions might not give you
the screen to choose the ssh
executable where you choose between the Git
ssh and PuTTY ssh. You'll have to
set GIT_SSH manually if you use PuTTY.
I didn't follow one part of the
instructions and that was installing
Tortoise - I used the command line
instead as that's how I prefer to
learn a vcs like I did with rcs and Subversion and
found that to work for me. I had
problems with the clone command
using ssh. Here's how I did it:
Git clone using ssh - can't find repository
This is where I banged my head the most.
The CopSsh install directory was
/Program Files (x86)/ICW. I got
away with this, but if I were doing
it again, I'd use a directory name
with no spaces.
These other sources helped me figure things out:
Another way to setup a Git server
on Windows:
http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP
The client side of things:
http://toolmantim.com/thoughts/setting_up_a_new_remote_git_repository
An explanation of Git as a server
(not related to Windows, but a more
in depth look than installation
steps):
http://progit.org/book/ch4-0.html
Plus O'Reilly's Version Control with Git - the Remote Repositories chapter.
In retrospect, if I had known how time consuming this would be, I might have started out with Mercurial as I read the install on Windows is easier, but I'll have an opinion on that after I work with Git awhile and then try Mercurial.
I am not sure why anyone hasn't suggested http://gitblit.com. Pure java based solution, allow HTTP protocol and really easy to setup.
After following Tim Davis' guide and Steve's follow-up, here is what I did:
Server PC
Install CopSSH, msysgit.
When creating the CopSSH user, uncheck Password Authentication and check Public Key Authentication so your public/private keys will work.
Create public/private keys using PuTTygen. put both keys in the user's CopSSH/home/user/.ssh directory.
Add the following to the user's CopSSH/home/user/.bashrc file:
GITPATH='/cygdrive/c/Program Files (x86)/Git/bin'
GITCOREPATH='/cygdrive/c/Program Files (x86)/Git/libexec/git-core'
PATH=${GITPATH}:${GITCOREPATH}:${PATH}
Open Git Bash and create a repository anywhere on your PC:
$ git --bare init repo.git
Initialized empty Git repository in C:/repopath/repo.git/
Client PC
Install msysgit.
Use the private key you created on the server to clone your repo from ssh://user#server:port/repopath/repo.git (for some reason, the root is the C: drive)
This allowed me to successfully clone and commit, but I could not push to the bare repo on the server. I kept getting:
git: '/repopath/repo.git' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly
This led me to Rui's trace and solution which was to create or add the following lines to .gitconfig in your Client PC's %USERPROFILE% path (C:\Users\UserName).
[remote "origin"]
receivepack = git receive-pack
I am not sure why this is needed...if anybody could provide insight, this would be helpful.
my git version is 1.7.3.1.msysgit.0
GitStack should meet your goal. I has a wizard setup.
It is free for 2 users and has a web based user interface. It is based on msysgit.
There is a nice open source Git stack called Git Blit. It is available for different platform and in different packages. You can also easily deploy it to your existing Tomcat or any other servlet container. Take a look at Setup git server on windows in few clicks tutorial for more details, it will take you around 10 minutes to get basic setup.
You don't need SSH for sharing git. If you're on a LAN or VPN, you can export a git project as a shared folder, and mount it on a remote machine. Then configure the remote repo using "file://" URLs instead of "git#" URLs. Takes all of 30 seconds. Done!
There may simply not be such a guide. If so, you may not have much luck convincing anybody to write one, because it would be a lot of work.
I would recommend either of two things. The easier one is to follow the guide you have slavishly, which means forgetting about msysgit.
The harder one is to put up a Linux server - perhaps as a guest under Windows using VirtualBox (free) or VMWare or Parallels (pay), and then follow one of the many sets of instructions Google will lead you to. But you will probably find those instructions are insufficient - they usually assume you've already set up an ssh server, for example, so you have to get that info elsewhere. I've done that twice, and can say that unless you're already something of a Linux guru, it will be a struggle.
I did what Bob Murphy suggested was the "hard" option.
I installed Ubuntu under VMWare Server (free) at work and then followed this guide on setting up Gitosis. I found it much easier than trying to get it going under Windows. Once it's set up you really don't have to touch it because Gitosis administration can be done from Windows by pushing updated versions of the gitosis.conf file. Any work I do need to do on the server directly is done via PuTTY so I don't have to use the horrible VMWare Server interface.
I've recently been messing around with VirtualBox at home and I've found it much nicer/easier to work with than VMWare Server, so it may be worth looking at that.
I just wanted to add my experiences with the PATH setup that Steve and timc mentions above: I got permission problems using shell tools (like mv and cp) having Git's shell executables first in the path.
Appending them after the existing PATH instead this solved my problems. Example:
GITPATH='/cygdrive/c/Program Files (x86)/Git/bin'
GITCOREPATH='/cygdrive/c/Program Files (x86)/Git/libexec/git-core'
PATH=${PATH}:${GITPATH}:${GITCOREPATH}
I guess CopSSH doesn't go along well with all of msysgit's shell executables...
I'm using GitWebAccess for many projects for half a year now, and it's proven to be the best of what I've tried. It seems, though, that lately sources are not supported, so - don't take latest binaries/sources. Currently they're broken :(
You can build from this version or download compiled binaries which I use from here.

Resources