Git Extensions usable with SVN repos? - windows

Can Git Extensions be used without issues (or at least, with very few ones) as a SVN client? I've no problem using the command-line git-svn, but in some cases (picking lines/hunks to commit, for example) I'd rather use a GUI client.
If there are issues, I'd like to see them along with your workarounds/solutions.

As a way of an updated answer (I think this question was asked in 2011), I just started using Git Extensions for a project that uses Subversion as the repo, but I wanted to use Git locally. Learning my way into it, Git Extensions has GUI based actions for commands like SVN Fetch, SVN Rebase, and SVN Dcommit.
So, if (and I don't know because I wasn't using it in 2011) Git Extensions didn't support Subversion repos in 2011, it looks like they have that support now.
Here is an example (see red highlights at bottom):
So, to better answer your question, yes it does have support as an SVN/Git client.

git-svn creates a repository that behaves as a regular Git repository unless you are doing one of it's special operations (dcommit etc.). Thus, it is perfectly fine to interact with that repository via any external Git client as long as you use it to do things you'd normally be able to do from the command line without screwing up git-svn. (E.g. you wouldn't want to try to rebase upstream commits, GUI or not.)
(You will, of course, still have to use the command line for the special git-svn commands, unless you find a GUI that supports them.)

As alluded to by #matth, SVN support was removed from Git Extensions v3.00. However, there is a plugin (mast-eu/GitExtensions.SVN) you can install to add basic git svn commands to Git Extensions. To install it, open Plugins > Plugin Manager and browse for "gitextensions.svn".
Once installed, SVN commands are added to menu bar.
Picture of menu bar with commands

Related

Cross-platform SVN issues, please explain

I am a Mac-based (10.8) web developer, trying to work with other Windows-based developers. They are using SVN, although most of them do not check out files to local repositories. They mostly edit the file on the local server via Explorer, and then use TortoiseSVN shell enhancement to right-click and "commit" what they just edited.
I cannot seem to do this, as my preferred SVN tool Versions (as well as Dreamweaver CS6) require access with the SVN, HTTP, etc. protocols. I get errors trying to use the file system.
So, I am trying the command line, navigating to the file I need to edit, open it, edit, save. I can run svn status on the directory and I see the file status as "M". If I try svn commit -m "updated" myflie.css or similar, I get an error:
svn: Unable to open an ra_local session to URL
svn: Local URL 'file://webstage-01/svn/repository/fc-dev/assets/css' contains unsupported hostname
I looked in the .svn folder "entries" file an see this:
10
dir
20788
file://webstage-01/svn/repository/fc-dev/assets/css
file://webstage-01/svn/repository
2012-06-26T16:08:10.220007Z
20747
JSmith
So it looks like that's where it's getting the path from, which is not a valid MacOS or Unix path.
Suggestions?
It sounds like the local server is already a checked out working directory that everyone is sharing. This is the completely wrong and awful way to do Subversion. In the end, you have no idea who is making the change because they're all using the same client. Plus, there's no guarantee that working clients use the same format of the working directory. If someone has a version 1.6 TortoiseSVN on their system, they could damage that working copy.
The correct way is for everyone to checkout a local copy of what's in that Subversion repository to their local machine (Windows or Mac), and then do their changes there and check it in. You won't have the issue of someone messing up that directory. You know who is making the changes. You won't have an issue of what happens if two people try to make the same changes at the same time. It's the way Subversion is suppose to work.
The Mac has the Subversion command line client. (Assuming you're using Mountain Lion -- the latest release) You need to install XCode (free from the Mac App store), and then in XCode, install the command line tools. Look at the on line Subversion manual and learn how to do the checkout in Subversion, create your own working directory, and check in from that.
There are many options if you want a Mac OS X GUI Subversion client. I highly recommend you look at Pathfinder](http://cocoatech.com/pathfinder/). It has a built in Subversion GUI client, but it also has many Finder enhancements that make it an excellent Finder replacement -- especially for power users. It's $40, but I think it's worth it just for the built in Terminal client.
I don't think you can do that. The svn folders on "local server" were created by a platform-specific tool like TortoiseSVN on Windows. Obviously it will have paths, etc. specific to Windows. You will need to checkout separately and make commits.
Also, BTW, set the EOL property to 'native' so that you do not run into cross-platform EOL issues.

How do I use Github to access the same project files from different computers?

I work mainly on a desktop Mac but also have a laptop Mac that I use when away from the office.
I want to access and work on my latest html, css, php and python files from either computer.
I thought Github was the way to do this but am having a problem understanding the "flow" and I've RTFM! I don't understand whether I should create a Repository on Github first, why when I try to "clone" something it doesn't magically end up on my local computer... where the nice big red button that says "sync" is...
... or whether I should just use the commandline ONLY...
So, if I start on my desktop and create new files, what are the correct steps using git or Github (?) to put those files where they can then be accessed from my laptop and then have the files on my laptop merged back into the ?Github repository so I can then access those files from my desktop.
Thank you all for your replies and answers! The git workflow, for my needs, is now clear.
The workflow presented by wadesworld is concise and was the overview I needed.
However, Michael Durrant's commandline steps filled in that workflow specifically with commandline directives - and I needed that also.
steelclaw and uDaY's answers and responses were important because I did not understand that it did not matter which repo I created first and, adding and committing locally were essential first steps in my workflow.
Specifically, steelclaw's response to one of my response questions provided the closure I needed, so I could learn more:
After initializing the repository, be sure to use 'add' and 'commit.' These will make the files an official version of the repository. After that, you need to use 'push' to upload it to the remote repository."
ilollar's resource, "Git for Ages 4 and Up" is also worthy of the click, especially for folks like me who are visual!
Thank you all so very much!!
Do you want to version control your files or just have access to the same files in both places?
It is a good idea to use version control as a developer, whether you're writing code or designing websites. But, to do so, you have to have a commitment to learning how version control systems work, since they all have some learning curve.
But, if you're not interested in that complexity and simply want to be sure you have access to the latest version of your files, then you're looking at a file syncing operation which can be much more simple.
So, which one do you want?
Edit: Based on the response, here's the model:
1) Create repository on work computer.
2) Create repository with same name on github.
3) Push to repository on github
4) At home, do a git clone to pull down the changes you pushed.
5) Now that the repository exists in both locations, you can simply do a git push before you leave work, and git pull when you get home, and vice-versa when going the other direction.
To answer the detail of your question: I'd go with Dropbox.
UbuntuOne is also good even for non Ubuntu users and of course Google drive is the (big) new player on the block.
They compare as follows:
Service Free*1 NextLevel*1 NextLevel($)*2 Features
Dropbox 2 50 $2.5O One Folder, best gui sync tools.
UbuntuOne 5 20 $4.00 Multiple directories anywhere
GDrive 5 25 $2.50 It's Google.
*1 GB
*2 Cost per month
To answer the title of your question:
If you wanted something that's more suited to programmers, I'd use git:
First, install gitx (linux readers, that's gitg) as that is by far the most popular gui for git:
For the "flow" I can also refer you to my write-up of various features at:
What are the core concepts of git, github, fork & branch. How does git compare to SVN?
Using gitx or gitg the specific flow is as follow:
1) Make some changes to files.
2) Use the tools "commit" tab to see what's changed ("unstaged"):
3) Add a file by dragging it from "unstaged" to "staged":
4) Give a commit message
5) Commit the file.
6) I then push it to the remote at the command line with $ git push remote or I use the gui by right clicking and select ing the 2nd master - see here:
.
If I'm sharing with others I'll often need to do git pull to get ands merge in others chnages) before being able to do a git push
The github part is doing init and push and clone but I'd say just read up on those tutorials more rather than an SO question. Basically though, I do:
Set up repository locally in git:
git init
git add .
git commit "Initial commit"
Set up github:
Create a github repository using github (https://help.github.com/articles/create-a-repo)and then push your local repository to it as in:
git push origin master.
If the repository already exists on github but not on your local pc, that's wheh you click the remote link and then in a terminal type git clone [paste here, e.g. ctrl-v]
If you're "starting" with github:
Make code changes
git pull - get latest version into your repository and merge in any changes
git add . Add all modified files
git commit -m "message"
git push # origin master is the default.
If, at the end of the day you decide to go with something simple like Dropbox you can use my referral link -http://db.tt/pZrz4t3k- to get a little more than the standard 2GB, Using this we both get an extra 0.5 GB, however which of all these routes to go is up to you and your needs. I use all these services (git, github, UbuntuOne, Dropbox and googleDrive, so I am not recommending one over the others -it depends on the needs).
I would recommend using DropBox or Google Drive. They will let you do EXACTLY what you are trying to achieve, they are very user friendly (and free [5 Gb I think]).
They automatically update (as long as you have an internet connection obviously)
Just make a folder, put some files in it, and you are away.
Since explaining how to use an entire VCS in one answer is an overwhelming task, I can instead point you in the direction of some very helpful resources to get you to understanding and using Git:
Pro Git - a free online book (written with Git!) with easy language on all things Git.
GitHub Help - GitHub's own help section walks you through setting up and using Git, and not just with their own apps. Very useful.
Get Started with Git - A good tutorial getting you up and running with Git.
Git For Ages 4 and Up - Fantastic video explaining the inner-workings of Git with Tinker Toys. Not best for an introduction into Git, but a great video to watch once you feel a bit more comfortable.
Git may feel complicated or strange at first, but if what you are looking for is a good version control system, it is excellent.
However, if all you're looking for is a cloud-like service to sync some files across multiple computers, like the others have mentioned, Dropbox would be the way to go.
I use Github as a "hub" of git, to share finished codes. (And Git for version control)
And Dropbox to sync files between different computers and mobile/tablet, to manage files.
http://db.tt/EuXOgGQ
They serve different purposes for me. Both are good!
Git is an advanced and rather difficult tool to use for version control. If you're feeling brave, you can try to install the command line tool, however I recommend using a graphical client, specifically SourceTree.
http://www.atlassian.com/software/sourcetree/overview
You'll need to clone your repository, or else initialize a new one. To connect to your repository, you'll need to know the URL, and possibly a username and password for your repository. You also need to provide a valid name for the repository.
To update files there are several steps: First, you need to add the changes to the directory. Source tree might do this automatically. Then you need to commit the changes. This is basically confirming changes and signing them with a comment. To upload them, you need to use push and select the correct remote repository. When you want to update your local repository, you'll need to use pull and again select the correct remote repository.
For your purposes, however, it seems like dropbox might be better, because it automatically updates and is very simple. If you don't need the advanced version control that git provides (e.g. branching, merging from many users), then it seems like it would be a better option for you.
https://www.dropbox.com/

local versioning system (Windows)

Is there any useful tool that can store history of my folder locally like SVN does?
For example I can commit (however not to server but locally) or it can automatically track folder history.
The idea is to view history of my folder and rollback something or so (like in SVN but without server)
This is needes for Windows
Git should do the trick nicely. It is distributed so you can just use it locally without connecting to a server.
http://code.google.com/p/msysgit/
What you describes sound a whole lot like the core of distributed/decentralized version control systems (DVCS). The most popular DVCSs are Git and Mercurial (and Bazaar to some degree, though it seems an order of magnitude less widespread).
In fact, I'm doing precisely what you describe for some non-programming projects, with Mercurial (specifically TortoiseHg - the equivalent to TortoiseSVN) and it's working perfectly. Git long had a reputation for inferior Windows support and GUI tools, but I wouldn't be surprised if this has changed. I've never really used Git (wasn't ever dissatisfied with Mercurial, so I only use it for checking out the source of projects that use Git), so I can neither judge its fitness for your usecase nor recomment a frontend.
You can use even SVN (TortoiseSVN) with file:/// protocol for this task (create local repo without server)

Is it easy to port TortoiseHg to use Git instead?

TortoiseHg is superior to TortoiseGit in many features.
Would be a matter of changing a few lines of code to make a new TortoiseGit based on TortoiseHg, or it requires weeks/months of development?
You can use Mercurial with Git repositories via the excellent hg-git extension, which is developed by the github folks. Any recent TortoiseHg version already has the dulwich library, you just need to clone hg-git and add a couple lines to your mercurial.ini file.
The instructions are in the TortoiseHg help under "Use with other VCS systems" .
Directions for configuring ssh can be found here. However, TortoiseHg will automatically use the plink it comes bundled with, so you don't need to worry about configuring PuTTY's plink.
Note that I've had some problems cloning large repos on XP due to file locking issues which don't seem to occur on Windows 7.
It would definitely not be just a matter of changing a few lines.
TortoiseHg is intimately written against Mercurial. It doesn't just wrap around the command line client, it integrates with the core python code.
The entire program, from bottom and up, would have to be rewritten.
It is much more constructive to give the TortoiseGit team good feedback on what you would like see improved.

Git On Windows Without Cygwin?

Are there any native Git implementations for Windows that do not require Cygwin? I've become a fan of the TortoiseSVN client, and would really like to see a similar Git client for Windows.
Edit: I am also considering Mercurial, but would prefer to check out a few before I make a decision.
There is a TortoiseGit -- Window Explore Extenstion to Operate Git.
I started GitExtensions about a week ago. Allthough version 0.6 is a pretty complete package, I do not consider it release-ready yet. The toolset should be ready for its first stable release in a few days. There are a few things I need to fix before anyone should use it in production. The most important problem now is that the shell extension part is written in c# and therefore can cause problems. I'm rewriting this in c++ at the moment, should just take another few hours. I also want to build in some features that should prevent users from screwing up (like create a stash ontop of another stash and throwing away work or commiting changes when in the middle of a merge). I allready finished allmost all git commands I ever use (push, pull, fetch, stash, branch, commit, merge, format-patch, am, apply, etc), so it should be usable pretty soon. The toolset is written in C# (.Net 3.5 until version 0.6, later versions use .Net 2.0) except the shell extension part. There is also a visual studio plugin, but this is still pretty basic.
I have not tried TortoiseGit yet btw, but I really like TortoiseSVN!
Henk
Take a look at MSysGit. However this is just the command line git compiled with MingW instead of cygwin. This is not a GUI Tool like TortoiseSVN.
There is GitExtensions that takes the same path as Tortoise but it does not look ready yet.
Have you tried looking at the TortoiseGit page on Google Code? I believe it's the same project as the other link posted, but it's a bit friendlier. You can download the latest version as an installer from there.

Resources