Archive for the ‘DVCS – Distributed Version Control’ Category
Posted by jpluimers on 2019/08/01
Via a co-worker:
In my own experience, PlasticSCM needs a lot of work, especially on the usability side:
- PlasticSCM call themselves a DVCS, but in order to have a local full repository like all other DVCS systems, you have to run a local server (and a license for it, I still need to sort out if that is free or paid). For the DVCS definition, see Distributed version control – Wikipedia. This means you run a client, a local PlasticSCM server and a remote PlasticSCM server.
- Despite there being a CLI version (more on that in a future post), the GUI does not show the exact CLI syntax for commands (unlike most git tools that do). This means you need to think thrice when translating them from GUI to CLI, made even harder by most UI access paths having different ways to copy their information to the clipboard.
- When you run the Plastic SCM GUI client long enough, even on a small repository, you will get errors about not enough quota being available (the dreaded 0x718): [WayBack] System Error Codes (1700-3999) | Microsoft Docs
ERROR_NOT_ENOUGH_QUOTA 1816 (0x718): Not enough quota is available to process this command.
- Often after scanning for changes, you see a lot of changed files. If you click each file, you see “Files are identical”
- As a result you have to perform “Undo Unchanged”:

- I never have this when using git.
- Online PlasticSCM hosting parties, especially integrated with bug tracking, are far and few between: besides [WayBack] PlasticSCM cloud, I have not found any. Take the git world, or even the Mercurial world and there are far more choices (yes I know about the manual labour involved setting it up described at [WayBack] Plastic SCM version control · Task and issue tracking systems guide and [Archive.is] Plastic SCM blog: Integrating Plastic SCM with Trac Issue Tracking).
One thing that baffled me is that you can edit commit messages. Changing them does not result in another commit. This means that these are not set in stone which is very odd when you see all changes in the commit history.
[Archive.is] Are check-in comment editable?
Sure!
The commit message textbox is editable, start typing and then push save. 
—
I realized that in the Branch Explorer one can edit them using the procedure you’ve described, but if you open a changset from “Changesets” or somewhere else, the comment on the top is readonly. Maybe it would be nice to be have a way to edit it there, though I guess, it would be a rarely used feature.
—
At the changesets view you are also able to do it by cliking in the “Show extended information” button.
I’m afraid that this are the only spots to do it.
–jeroen
Posted in Development, DVCS - Distributed Version Control, git, Source Code Management | Leave a Comment »
Posted by jpluimers on 2019/05/31
One day I will likely need svnrdump:
Since I keep forgetting what the tool is called and how to use it: svnrdump is a tool that can dump a remote svn repostory to a text file and also load that text file into a different remote svn repository…
Via: [WayBack] Since I keep forgetting what the tool is called and how to use it: svnrdump i…
–jeroen
Posted in *nix, Development, DVCS - Distributed Version Control, Power User, Subversion/SVN, Windows | Leave a Comment »
Posted by jpluimers on 2019/04/15
Just when I thought I made a note of a password I hardly ever use, I didn’t, luckily this open source tools understands how to recover many kinds of passwords: AlessandroZ/LaZagne: Credentials recovery project.
–jeroen
Posted in *nix, *nix-tools, Chrome, Development, DVCS - Distributed Version Control, Firefox, git, Internet Explorer, Office, Opera, Outlook, Power User, Python, Scripting, Skype, Software Development, Source Code Management, Web Browsers, WiFi, Windows | Leave a Comment »
Posted by jpluimers on 2019/03/20
I had an error when doing a rename (mv) in git “unable to unlink old” “invalid argument”. This appeared to be a process having a lock on that file.
In my case, this was a bit hard to track down (I used Process Explorer for it), as the culprit was SourceTree running git in the background to keep an eye on changes in the repository because it has a file system watcher on the repository tree and a different process was writing log files in the same directory structure.
Can you still follow? I had a hard time so here it is in manageable bits:
- By default SourceTree has a file system watcher on your repositories
- If that watcher fires, SourceTree runs a background git process to get the current state of the repository
- If you perform UI actions, SourceTree runs a foreground git process to perform the action
- SourceTree does not have a mechanism to wait for the background git process to finish before running the foreground process
- I had had another process running that logged into a relative directory that happened to be within the repository tree (but using files excluded by .gitignore)
Basically SourceTree should do two things:
- keep track of the background process and not fire a foreground one
- do not start the background process for files excluded by .gitignore
I tracked down what happened using these tips:
–jeroen
Posted in Development, DVCS - Distributed Version Control, git, Source Code Management | Leave a Comment »
Posted by jpluimers on 2019/03/07
SourceTree does not like it when by accident two git stash entries have exactly the same name.
To work around that, you have to rename one.
The easiest way to do this is on the console using the tips from [WayBack] How can I rename a git stash? – Stack Overflow (thanks [WayBack] qzb):
$ git stash list
stash@{0}: WIP on master: Add some very important feature
stash@{1}: WIP on master: Fix some silly bug
First, you must remove stash entry which you want to rename:
$ git stash drop stash@{1}
Dropped stash@{1} (af8fdeee49a03d1b4609f294635e7f0d622e03db)
Now just add it again with new message using sha of commit returned after dropping:
$ git stash store -m "Very descriptive message" af8fdeee49a03d1b4609f294635e7f0d622e03db
And that’s it:
$ git stash list
stash@{0}: Very descriptive message
stash@{1}: WIP on master: Add some very important feature
This solution requires git 1.8.4 or later, and yes, it works with dirty working directory too.
Some other useful git stash commands:
–jeroen
Posted in Development, DVCS - Distributed Version Control, git, Software Development, Source Code Management, SourceTree | Leave a Comment »
Posted by jpluimers on 2019/03/05
Below are the git statements I used to solve this ASCII art problem from me (as I work in Git Flow feature branches):
old situation:
commit-1..4 - commit-5 - commit-6 - commit-7 - commit-8 - commit-9
^ ^ ^ ^ ^
| | | | |
master develop feature/A feature/old
to:
commit-1..4 - commit-5 - commit-6 - commit-7 - commit-8 - commit-9
^ ^ ^ ^ ^
| | | | |
master develop feature/A feature/old feature/new
git branch
git rev-parse HEAD
git log --pretty=format:'%H' -n 2
git checkout -b feature/new hash-of-commit-8
git branch --set-upstream-to=feature/old
git cherry-pick ..feature/old
git branch --force feature/old hash-of-commit-8
Step by step, this is what happens:
branch lists the current branches
rev-parse HEAD shows the hash of the current commit (commit-9)
log --pretty=format:'%H' -n 1shows the hash of the previous two commits (from top to bottom: commit-9 and commit-8)
checkout creates a new branch based on the past commit-8
branch --set-upstream ensures the new branch tracks the old branch
cherry pick ensures the new branch gets all the commits from the old branch
branch --force ensure the old branch looses the extra commits you wanted to only be in newBranchName
Based on
–jeroen
Posted in Development, DVCS - Distributed Version Control, git, Power User, Software Development, Source Code Management | Leave a Comment »