|
Bazaar has some very nice documentation, much of which is useful with other (D)VCS as well. Bazaar in five minutes and the user guide are worth a look. Also, considering how large IBM is, I'm always surprised at how terrible their VCS tools (ClearCase and Continuus) are.
|
# ¿ Apr 8, 2009 22:11 |
|
|
# ¿ Apr 28, 2024 07:09 |
|
SAHChandler posted:I recently got into a debate with a friend of git v. bzr. It's got a stable API, so instead of having to write extensions by parsing output from other commands, you just import bzrlib. You can give each branch its own directory, so generated temporary files won't get mixed up between branches. It tracks file renames, which is *very* useful for versioning non-text (images, compressed files, external libraries, etc). It works well on Windows, without having to install a Linux emulation layer, and comes with a GUI if that's your bag.
|
# ¿ Apr 16, 2009 21:54 |
|
bitprophet posted:Can't comment on the rest (besides making a snide "who gives a poo poo about Windows?" taunt, and mention that Mercurial is supposed to have good Windows support too) but Git tracks file renames just fine, as far as I can tell? Git only tracks file contents, so when a binary file is both renamed and modified, it's usually treated as a completely different file. This can make it difficult to track things like "who added this image to the project?".
|
# ¿ Apr 17, 2009 02:24 |
|
Sartak posted:That this is the first mention of darcs makes me sad. misery.sh
|
# ¿ Apr 17, 2009 02:53 |
|
king_kilr posted:This is terrible, that means when I'm doing development of say, Django, I'd need to muck with my python path since the location of my code would change. Learn to manage your own files properly, I've never once had this temporary files issue. Using your Django example, how do you manage changes to the database? I assume you have different database/settings/cache/etc files for each branch, to avoid cross-contamination, and using a merged directory requires lots of temporary "commit; switch; uncommit; commit; switch; uncommit" cycles (which take bloody ages). In Bazaar, I just "cd ../otherbranch". As for Python paths, if you can't figure out how to use relative paths, maybe the problem is you. That's like saying I can run SourceSafe natively in Linux, because it works in Wine. I don't want to install GCC/Bash/etc just for a source-control system. bitprophet posted:Right, my point is that I think you're working off of old info. I just made a random binary file with dd and then 1) added it as-is, 2) renamed it without modifying it, and 3) renamed AND modified it in the same commit. I just tried it with git 1.6.2.3 (latest for download), and it didn't work correctly: code:
TOO SCSI FOR MY CAT fucked around with this message at 17:58 on Apr 17, 2009 |
# ¿ Apr 17, 2009 17:52 |
|
deimos posted:I don't think you "get" msysgit. Git's written in C, shell scripts, and Perl. Unless msysgit is a rewrite of all the scripts into C, it will require a UNIX shell, supporting binaries, and Perl to be installed. king_kilr posted:SQLite is just a file and it's managed in a different repo from my actual work on Django itself. And the rest of the file types I mentioned? Not every project is so self-contained that there are no cache or temporary files generated. king_kilr posted:What? I keep django in /home/user/django_src/ what would you like me to set my python path to such that everything would Just Work(tm) if I were to move it to be in a different directory? If you've got a project you're devloping in ~/django_src/, then instead of hardcoding "/home/user/django_src" into testing scripts, just add the project's current directory to the Python path.
|
# ¿ Apr 18, 2009 00:53 |
|
king_kilr posted:I don't understand this? Delete your temp files, keep them in the repo, or use git stash. You seem to be arguing that people have files that need to exist in the same directory as the repository, need to be long lived, and aren't actually part of the repository. That's precisely what I'm arguing, because that's something I've experienced both with my own projects, and others. king_kilr posted:I don't hardcode anything to my other scripts, they simply import django. I have ~/django_src/ on my python path, however if that's a moving target I have to be constantly moving my pythonpath, you seem to be acting deliberately obtuse. So you've got several scripts that are hardcoded to use a particular directory, which may or may not actually be the version they expect to import? Awesome.
|
# ¿ Apr 18, 2009 01:51 |
|
Pardot posted:Maybe I also don't get it, but isn't that what .gitignore files are all about? I've got a branch. To work on that branch, I need a large temporary file that takes time to generate. If I switch to another branch, I have two choices: * Leave the file in place, and risk corruption from two different versions of the code modifying it. * Delete and re-generate the file each time I change the branch.
|
# ¿ Apr 18, 2009 15:27 |
|
sklnd posted:I really don't see how that is different from a sqlite db (aside from the corruption bit). Seems like you should just move your temp file out of your repo (say, into a tmp directory where it should be anyway?) and have a config setting telling your code where it is. Anything else seems to be a bit insane anyway if you're going to be jumping between such disparate branches often. Or I could just not restructure my project to work around deficiencies in the version control.
|
# ¿ Apr 18, 2009 17:06 |
|
sonic bed head posted:If I have a working copy checked out with local changes, is it possible for me to copy that working copy to make a pristine, non changed copy locally? I am trying to have two different copies of the same branch, but I don't want to go through checking it out again because it's huge and will take 45 minutes on my slow internet connection. I also don't want to revert my current working copy. Thanks.
|
# ¿ Jun 4, 2009 20:35 |
|
Sartak posted:I just converted nearly all of my repositories to git.
|
# ¿ Jun 4, 2009 21:04 |
|
nbv4 posted:Whats the best source control program for single person projects? Right now I have a website project that I manage with SVN. Basically I just use it to streamline moving files from my local machine to my webserver. Instead of manually moving files with a ftp program, I just commit, then ssh into my server, then checkout. Bazaar (my preference) or Mercurial are both good choices.
|
# ¿ Aug 7, 2009 06:07 |
|
Profane Obituary! posted:Hey guys i want to be able to branch, does svn do this?
|
# ¿ Aug 7, 2009 18:18 |
|
floWenoL posted:Honestly, any distributed VCS will do just fine in place of git (I don't remember which one is the Windows-friendly one).
|
# ¿ Aug 7, 2009 21:38 |
|
rotor posted:Sadly, I'm not enough of an idiot to say that svn can do everything git can, since that would be obviously factually incorrect. My issue is that I don't think this guy needs to go to the trouble of moving his vcs midproject because I'd guess that the ROI on the effort investment will basically never pay off. I think git advocates tend to overstate the both benefits of their VCS and the deficiencies of svn.
|
# ¿ Aug 7, 2009 22:11 |
|
rotor posted:right, and then you have the actual work of learning how the new vcs works and how to take advantage of all these miraculous new features. svn commit -> bzr commit svn update -> bzr pull svn cp trunk/ branches/fix-poo poo -> bzr branch trunk fix-poo poo ?????? -> cd trunk; bzr merge ../fix-poo poo
|
# ¿ Aug 7, 2009 22:23 |
|
stray posted:I'm learning to program ObjC/Cocoa and I still do some web design, though mostly for myself. Even though I'm working alone, I want to put all of it under version control (not only for peace of mind, but because it's just a good habit to get into). In the past, I usually just used snapshots of folders and burned discs. I would choose a distributed VCS, rather than Subversion -- my favorite is Bazaar. However, any of the "big 4" (Bazaar, Darcs, Git, Mercurial) should work fine for you. Some VCSs store binary files in full, others use deltas. Deltas won't "screw up" files, but whether they save space will depend on the formats you're storing. For example, PNG or JPEG files will usually not see much advantage from deltas. I don't know enough about PSD to comment on it.
|
# ¿ Jan 25, 2010 23:11 |
|
Sizzlechest posted:No. It's a matter of whether or not you intend on implementing a distributed vcs as a distributed vcs. People keep crowing about how centralized vcs is obsolete, when that's exactly what they end up doing. I keep re-reading this paragraph, but no matter how hard I try, it never makes any sense. SVN doesn't support branching. I can't branch from the main repository to my workstation, make commits locally, and then merge them back. This is why SVN, or any centralized VCS, are awful to use. Bazaar/Mercurial/Darcs/Git do support branching. I can branch from the main repository to my workstation, make commits locally, and then merge them back. This is the entire purpose to distributed VCS.
|
# ¿ Mar 12, 2010 03:34 |
|
MachinTrucChose posted:I know this isn't the right thread, but anyone recommend a version control tool that works well (fast) with binary files, and is simple to use by a non-technical Windows user? All major DVCS (bazaar, mercurial, git) are basically the same when it comes to binary files; they might have some basic compression or bdiff logic, but there's no way around the fact that you're versioning 500MB blobs. They do have all your requested features, and should be reasonably fast, but the repositories will be huge. Since installing and testing them should take maybe 5 minutes max, how about you just try them out with his workflow and see which works best? Bazaar has a Windows shell extension built in, Mercurial has TortoiseHg, Git has TortoiseGit
|
# ¿ Nov 22, 2010 18:57 |
|
danishcake posted:Can anyone recommend an issue tracker that can be used in a distributed fashion? Ideally I want something with minimal dependencies along the lines of TiddlyWiki, but tailored to issue tracking, and able to cope with a little light merging. Installing Python etc is not an option, but I do at least have access to a modern browser. If you want something a little more heavyweight you can use Fossil, assuming you're allowed to install it.
|
# ¿ Dec 22, 2010 18:36 |
|
Mithaldu posted:Sadly not: http://whygitisbetterthanx.com/ For example, you can't compare "clone" operations by timing how long it takes to download from four completely separate websites, and saying that git's "branch" is faster than bzr's is useless when they are actually entirely different commands that happen to have the same name. In the last point, he says Git is better than Mercurial because of Github, which makes me think the page is *really* old (Bitbucket was launched in 2008). He also doesn't mention what versions he tested with, which makes a big difference (especially on the performance-related parts). Finally, I think it's *really* weird that he lists "cheap branching" as the first one, *and* claims Mercurial and Bazaar don't support it. Bazaar has supported cheap branches since 0.8 (released: 2006), and if I remember correctly Mercurial had them even earlier. Captain Corny posted:If you're dumb/crazy enough to use Windows as a development workstation, you do not have permission to complain when standard tools do not work properly any more than someone still using Netscape 4 gets to complain about Google Docs requiring Javascript. Spend half an hour and install a real OS. It's obvious from your posts that you expect your VCS to hold your hand, spoon-feed you, and change your diaper before each commit. Maybe you'd be happier with Visual Source Safe -- it's got "visual" right in the name!
|
# ¿ Apr 21, 2011 05:23 |
|
Captain Corny posted:Nice attitude. Try reading what I'm actually saying next time. Captain Corny posted:Right, but I didn't really have any choice. It just saddens me that Git apparently was designed for Linux only, and that any use for it on other (much bigger) platforms was ignored because of some misplaced and immature pro-Linux bravado. It's just a dumb strategy to follow and even for that reason alone I don't like Git. Captain Corny posted:Whoever was developing it were wasting their time because they apparently collectively decided to make it Linux only with extremely limited support for other platforms. How's that? Captain Corny posted:So, an early software design decision ends up exposing first time Git users to the complex inner workings of the software they're about to use. Bad design decision. Dumb design decision. First-time users aren't exposed to any "complex inner workings" unless they're installing on a broken OS that doesn't come with any standard developer tools, like Bash or Perl. Captain Corny posted:Full-blood Linux coders. Captain Corny posted:I get that. The design decision I talked about was made by the core developers, not the msysgit developers. Still a bad decision. Captain Corny posted:While coders are the main beneficiaries of version control systems, the popular versioning tools of the future are going to be used by a lot more people than just coders. 90% of VCS features are targeted to and intended for programmers. There's no reason for non-coders to ever care about branches, or merging; in fact, the typical non-code file (graphic images) can't be reasonably merged at all. If you want non-developers to use VCS, write them a few simple tools with two or three buttons ("find changes", "send changes", "mark change") and don't expose them to branches or repositories or any of that. Captain Corny posted:I am familiar with the principle, but this sounds like an example of adhering to a principle to the point of crippling yourself, and therefore a bad decision. Someone in this thread pointed out that libgit, through necessity, is now being rewritten to make it at least bearable to use on other platforms. Talk about repeating yourself. Captain Corny posted:That may be true for small scripts and tools, but once you decide to go into anything heavier (and 4+ months development time for just a tool is heavy), and when you are creating something that's intended for external use, and when you are creating something that's intended to be a replacement for another tool that is available on all platforms, it's generally a good idea to look at who your userbase is going to be. And particularly with version control, you should design your software to be at least portable enough that somebody else can make a version for another platform. There seems to be a fundamental difference of opinion on this between us. The predicted (and, so far, major) userbase is Linux kernel developers. Some guy who used Git for his 200-line Rails plugin because he saw a cool screencast about it doesn't matter. Captain Corny posted:Of course, they are free to make their tool as they see fit and be happy about it. Not giving a gently caress is a right that I'll be the first to defend, and designing a good UI is a lot more work than inflicting unnecessary pain on your users. However, don't be surprised when people don't want to use your creation as a result of that. Captain Corny posted:Not at all, it's an entirely different thing. With cross platform development, you make your application cross-platform (or at least easily portable) from the first line of code you write. It's what I mean with early design decisions. Git was clearly not developed to be cross platform (bad early design decision IMO), so it's no surprise that people are running into problems getting it ported. CVS and SVN had decent Windows support from the start. They were cross platform and CVS existed before Git even started development, which proves that even back then, it was not impossible to develop cross platform. Visual Studio: Windows only XCode: MacOS only Emacs/Vim: POSIX only Git/Mercurial/Bazaar: POSIX only (the Windows ports are jokes) SVN/CVS: POSIX only (the Windows ports are missing major functionality) Autotools: POSIX only (... a bunch more marked "POSIX only") If you want to insist that CVS was cross-platform, then you don't get to say that Git isn't -- Git works at least as well, if not better, on Windows than CVS ever did. Captain Corny posted:I'm sorry, but this is bullshit. There's always a lead developer, or some kind of body that makes decisions about architecture or design, even in open source. This doesn't even have to be formal. It just always works that way. Captain Corny posted:But even if that wasn't true, what you're basically doing is making excuses. "Sure, the software has flaws but it's because of the build process." "Sure, the installer is harder to use than it should be, but that's because it depends on a set of tools that aren't available on Windows." Captain Corny posted:It doesn't unravel squat. It is entirely irrelevant what it was intended for. The only thing that matters is that it *did* get released for Windows. That fact alone makes it completely fair to compare it to other Windows applications and to pass judgment on it from a Windows centric perspective. Captain Corny posted:You're completely misrepresenting my point now. The installer doesn't ask you to think, it asks you to *know*. Not only that, it asks you to know things that you can only know when you're already a user of the software. And that's unreasonable. Captain Corny posted:Seriously? You don't have something better to be appalled about than what some guy writes on the internet about a piece of software you're using? And you think the rest of the thread is with you on this? In that case, let me hereby apologize for offending your delicate sensitivities. I didn't realize how emotionally attached you were to Git. Captain Corny posted:You keep saying that Git's Windows support is awesome, yet the Python devs recently chose Mercurial over Git. One of the key reasons was lack of decent Windows support. That's not necessarily a bad thing -- Mercurial is a pretty good choice, and there's no compelling reason to pick any one of the major three DVCS in existance -- but you don't get to use it to support your position. Git on Windows works as well as Mercurial does, certainly. Captain Corny posted:I don't see how that's incredible. Decent Windows support is a pretty basic and common requirement for software that's supposed to run on Windows.
|
# ¿ Apr 21, 2011 16:41 |
|
epswing posted:Actually Mercurial works super nice on Windows. I don't have enough experience with the other two VCS systems you mentioned to comment on their level of jokeness on Windows. * symlinks * hardlinks * files named "makefile" and "Makefile" in the same directory Has support for these improved/been added? I don't use Mercurial day-to-day.
|
# ¿ Apr 21, 2011 17:38 |
|
wellwhoopdedooo posted:VIM is one of the first things I install on every Windows system that's mine. Well before I install Cygwin. TortoiseSVN is a wrapper around SVN; SVN itself is, like Mercurial, reacts poorly when the repository contains links or case-differentiated filenames. It's not really the SVN developer's fault, it's just that the platform is missing features that the tool allows.
|
# ¿ Apr 21, 2011 17:47 |
|
wellwhoopdedooo posted:It's a pretty big leap to call something "POSIX Only" because CTRL-C doesn't copy. "POSIX only" was a poor choice of words, I should have chosen something like "POSIX native" instead. Basically, I wanted to convey the feeling of "this was obviously written for a different OS" that comes from features like :! working sorta-but-not-quite.
|
# ¿ Apr 21, 2011 18:01 |
|
Mithaldu posted:I think you might be misreading things. Yes -- if you want to compare branching in a local Git repo, you should compare it to branching in a local Bazaar repo: code:
Mithaldu posted:Bazaar: I wouldn't call 40 seconds cheap. Neither is it particularly cheap to switch branches if "to branch" means "create a new directory". (And i haven't even looked into rebase (or similar) capability.) As such, i think it is entirely fair to say Bazaar has no such thing as cheap branches. If you still think so, please show us how i can create a branch or branch-like thing in Bazaar in under a second and also switch to another one while staying in the same directory. The typical workflow of Bazaar is to have one branch per directory; however, you can use "bzr switch" to change what branch the current working copy uses. I like per-branch directories, so I don't use it much. Mithaldu posted:Mercurial: I have to admit, as far as speed and ease for creating and switching go, its on par with git. So his benchmark there seems to be completely out of date now. On the other hand, i still have to deduct points for lack of rebasing. That's pretty important to have.
|
# ¿ Apr 21, 2011 21:46 |
|
Captain Corny posted:Maybe I created 'Janin' to let the rest of the thread see how dumb a typical Git user is. You're just too dumb to realise how dumb you are.
|
# ¿ Apr 21, 2011 21:49 |
|
Thermopyle posted:So, I've got a little-ish app that I'm developing. When I do a release version, I tag that commit (using git, BTW) with the version number, then I go on happily developing.
|
# ¿ Apr 25, 2011 22:14 |
|
devilmouse posted:My VCS experience has all been in Perforce and the current company is slowly migrating to Mercurial. I'm embracing it as best I can, but there's one nagging thing that I can't find a replacement / equivalent of in the new system... In Perforce, I'd have many changelists that I'd be working in at a time (let's ignore WHY I'm doing this for now). The closest I can find in Mercurial is the Shelve extension. Is this what I'm looking for or should I me making a bunch of branches to simulate the changelist behavior? You could try using mercurial queues; I haven't used them before, but a quick scan of the docs shows they might do what you want. If your CLs have dependencies between them -- eg, you're splitting up a huge change into 3-4 CLs -- then you will probably just have to use 'hg st' and commit them separately. Depending on how awful this is, you could try writing a simple plugin that lets you tag open files and commit only files with a certain tag.
|
# ¿ May 2, 2011 17:49 |
|
devilmouse posted:I might just bite the bullet and write a quick bunch of scripts to deal with this on my own, but it seems like I'm being contrarian to what hg wants me to be doing anyway and not learning The True Way. In Mercurial, as in most DVCS, the best practice is to have one branch per logical change. This works well for most users. If it doesn't work for you, just find a different solution. Nobody will judge you.
|
# ¿ May 2, 2011 19:09 |
|
Adahn the nameless posted:Why is that the case? I'm using Mercurial because it's easy and Joel Spolsky wrote a really good tutorial for it, but sometimes it seems that every open source project of worth is on Git. Why is that? What does it have over Mercurial?
|
# ¿ Aug 17, 2011 03:52 |
|
DreadCthulhu posted:So, has anybody here tried both bzr and git and made up his mind about what's better? I'm a git user myself, and have heard good things about bcz. Given that I'm a total whore and have no allegiance to any specific tool, I'll gladly switch over to bzr if the feature set is obviously better. Oh, and the UI is designed rather than accreted. It can push/pull to pretty much any other VCS (cvs/darcs/git/hg/svn), so you can use it even for people who use GitHub or Bitbucket or whatever.
|
# ¿ Aug 19, 2011 06:58 |
|
Mithaldu posted:Yeah, but what if i exploit your image thumbnailer to permit me read access to arbitrary paths on your system? (Just as an example.) If you can read arbitrary paths, you can already access the source code. There's nothing extra to read from having read-only access to the repository.
|
# ¿ Sep 8, 2011 01:18 |
|
|
# ¿ Apr 28, 2024 07:09 |
|
Mithaldu posted:You don't have much practical experience with system intrusion, do you? There's no reason to expose a source repo on the internet. There's no reason to let the webserver have any sort of credentials (just git/bzr/hg push to it). There's no reason why passwords should be stored in the history (they should be changed immediately, and the relevant history expunged). Mithaldu posted:Try thinking about what someone with determination AND creativity could do. Mithaldu posted:Leaving the security impact aside there's also the fact that a source checkout is not an atomic operation, the changes of it happen as git/svn/whatever touches the files, which, combined with ongoing user access can lead to interesting situations.
|
# ¿ Sep 8, 2011 04:00 |