If I recall correctly (from the Tortoise SVN's commit log I saw), Tortoise SVN added this feature in January where you can edit a file and have TSVN restore it after commit (aka Commit only parts of a file).
TSVN's documentation also lists this feature now:
http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-commit.html
I am running latest version of TSVN (1.7.6) on a Win 7 64 bit machine, but I cannot see this option anywhere while committing a file. Am I missing something, or has this feature not been shipped??
According to tortoise FAQ Page
I was told that issue/bug X was fixed in rXXX, but the latest release still doesn't have this implemented/fixed?
Our release policy is to never introduce new features or resource changes on the stable branch. We work on the trunk, where we fix bugs, introduce new features or change the behavior of features. Only important bugfixes are merged back to the stable branch, and the stable branch is where we create our releases from.
We have this policy to prevent getting new bugs into the stable branch. After all, it's called the stable branch.
Your requested feature/reported bug, even though it is fixed/implemented on trunk was not merged back to the stable branch due to this policy. That's why you don't see the change in the latest release.
Here's the FAQ.
Related
I am trying to implement a CI pipeline where development is merged to a release branch which, in turn, is merged to master.
The release branches are named x.y.z and reflect the version number of the release.
The release job modifies the pom to create a SNAPSHOT version (using the branch name). The master job modifies the pom to create a release version by removing '-SNAPSHOT'. Both jobs commit and push their changes.
The downside is that this causes a conflict on the next iteration. The previous commit on master puts it out-of-sync with development and the MergeRequest flags a conflict. The only difference is the version number in the pom and is straightforward to fix.
In the diagram above, it is not possible to merge 1.0.1 with master because of the commit 'Create release version (1.0.0)'.
I am wondering if it is possible (in Gitlab) to force an override when merging. Can I force an override of "theirs" with "mine" within the MergeRequest?
Background
This CI process seems to give a solution to the problem of who sets the pom version? This way the release branch defines the version and SNAPSHOTs and Releases are defined by the target branches.
This is for a web application and I want WAR files to be stored in Nexus as releases or SNAPSHOTs
GitLab has an interactive editor for solving merge conflicts:
https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html
It is possible to click use this on either their changes or our changes. There is a quirk with this though: The conflict resolution will be in the source branch and not in the target branch. This means that if you merge 1.0.1 into master and there's a conflict, it will show up as a merge of master into 1.0.1! It is then possible to accept the merge request, and this will result in a merge of 1.0.1 into master. This is a bit unexpected, but it makes it possible for a branch author to fix conflicts, even if they are not allowed to push fixes to the target branch.
There is an issue for this on GitLab:
https://gitlab.com/gitlab-org/gitlab/issues/25014
But they write that they don't have any plans to move forward with that at the moment.
Is there a way to rebase and squash commits on Gitlab CE UI, instead of using the interactive mode through command-line?
It seems implemented in issue EE 150 to the EE PR 1024, for allowing squashing merge request (GitLab EE 8.17).
See the documentation (EE for now) "Squash and merge".
The CE issue 4106 advocates for that feature to migrate back to CE.
Update Feb. 2018, a year later: as Jürgen Steinblock adds in the comments:
Great news!
It looks like this will make it into 10.8: see issue 34591: "Squash and merge in GitLab Libre (CE)".
Update June 2018: Jürgen Steinblock confirms in the comments:
GitLab 11 now includes Squash and merge for all editions, even Core (You have to manually enable a checkbox for existing merge requests and while creating new ones)
That will help keeping the Git history clean!
With GitLab 13.3 (August 2020), there is a new option which is interesting for squash commits:
Squash Commits Options
Squashing commits in Git is a great way to combine several commits into a single one.
It’s great for grouping several commits, which by themselves may provide little historical value, into a single large commit before pushing upstream.
Pushing a single commit allows for a more meaningful commit message, as well as ensuring the group of commits provides a “green” continuous integration pipeline.
In GitLab 13.3 we are adding configurable defaults for squashing commits, allowing project maintainers to configure the option to suit their preferred workflow.
Because changing squash configuration may introduce unwanted behavior, configuration has not been changed for new or existing projects. With 314 upvotes 👍, this is one of the most highly requested improvements by the community and we hope it allows more users to use this powerful feature.
See Documentation and Issue.
Currently (as of version 11.4.4) it does not appear that GitLab (any edition) supports Squash when using Rebase. This might be due to the way Squash works as a part of the "interactive" feature of Rebase (see command "rebase -i").
I am using Visual Studio 2012 on my home PC and I have been looking for a way to implement version control locally. I use Team Foundation Server at work, and have never used anything else. I am not trying to connect to my work server, I just want version control for my home projects.
I tried Git Tools for Visual Studio, which works ok - but it doesn't support reverting to a previous commit. Every time I've needed to revert, I've had to go to the Git repository website, download that commit, and replace the files on my machine.
Is there anything out there that supports similar version control to TFS?
Git is a good option because it keeps a complete copy of the repository version history locally-- you never need to push changes to an external server. You can read about setting up a local repository here.
Once you have a repository set up and some changes committed, you can use git reset --hard <commit> to reset to that commit. See documentation here. Note that this will wipe out any pending AND committed changes on top of the referenced commit.
I am trying to setup directory structure (workspace layout), I need to separate "stable" and "dev" code, and have several releases. I found this Recommended Mercurial repository/folder structure for an SVN user
Is this possible under Bazaar vcs? Any other suggestion to correctly structure directories?
That should work fine with Bazaar. eg.:
my-project (Bazaar shared repository[1])
+ trunk (you can use this for dev if you like)
+ branches (normal directory)
+ v1 (branch for a specific version)
+ v2
+ stable (push the stable stuff in here)
You can use whatever directory structure that you like, but using the svn layout helps to make things consistent for others on your project that have worked with svn.
With Bazaar like with Mercurial you don't really need branches
for each release because if you release off of trunk or stable
then you can just tag it which basically sets a pointer to the revision. Although it is handy to keep a branch per series onto which you can push minor bug fixes to be released as part of the next bugfix release for that series.
[1] Make the base directory for your project a Bazaar shared repository, so that each branch does not keep a copy of the revision history but in stead store all the history in the repository. You can create a Bazaar repository with bzr init-repo /path/to/my-project which will create the directory for you too. All branches pushed or branched under that directory will automatically use the shared repository.
You can also read the official Bazaar documentation on organizing branches and advanced shared repository layouts.
I'm in a pickle. I'm using SVN 1.5 at Beanstalk and Tortoise SVN client 1.6.11 x64 on Windows 7.
I'm developing on a branch and have been merging changes from the Trunk into my branch at least once a week. I recently noticed some things weren't working as trunk changes didn't make it into my branch. When I try to do a merge, Tortoise acts as though there are no changes in the trunk to merge. The Test Merge shows no files being added or updated.
I tried to merge my branch back to the trunk, but got a message saying that my branch wasn't up to date and told me to merge a range of revisions from the trunk.
I really don't want to do this by hand. How can I tell Tortoise and/or SVN that my branch is not up to date?
I still don't know what caused this to happen, but I did manage a work around. I instead did a backwards "reintegrate a branch into the trunk". This seemed to work good enough, but not perfect.