I created review for development branch in phabricator, updated it several times and than pushed branch for testing. Review was not finished but phabricator automatically closed it.
I can create another differential review, but all comments and updates will be in old...
So is there a way to reopen closed review?
I knew there was a better way!
EDIT: While the old answer works... it is not how to do this. Instead do this:
Go to the config section, and chose the differential group.
Find the option differential.allow-reopen
Set value to "Enable reopen" and save config entry.
Navigate to closed differential review.
Go to the bottom, and find the Leap Into Action section.
Chose the action reopen and add a comment
Press Clowncopterize and presto! Reopened!
No need to hack the database.
Also, take a look at the repository settings, to set up auto closing the way you want it.
Go to the Repositories administration section
Press edit for the repository you wish to manage
Chose the tracking tab
In the Application Configuration section you see two settings: Autoclose and Autoclose Branches.
I have set Autoclose to Enabled, and Autoclose Branches to master. That way only pushes to origin/master will autoclose a differential review.
---------OLD Answer--------
What sberry is suggesting is to SSH into your server, and open an MySql prompt:
mysql> USE phabricator_differential;
mysql> select status from differential_revision where id=5; (If your revision is D5 for example)
Notice that your status is not 0. It is most likely 3 for closed.
mysql> update differential_revision set status=0 where id=5;
Now your revision is open again.
I feel that this is quite cumbersome, but never the less it achieves the goal. I hope there is somebody who can suggest a better way to do it.
Related
I am currently writing a text with R bookdown and asked two friends to read my text and give comments, corrections and general feedback. My source files for the text are stored on GitHub and I would like my collaborators to make changes in the files (one for each chapter) with the help of git. However, none of us are really experts on git. This makes it hard to figure out what a suitable workflow is.
For now, we decided that each one of them creates himself a branch so that he does not directly push into the master branch. After I have read their changes I would like to decide what I merge into the master branch and what not. So far, it looks like each change needs to be in a separate commit because I am not able to merge single lines from a specific commit (not sure if that is at all possible). However, this seems like a lot of annoying and unnecessary commits to create. So, I guess I am looking for a way to avoid that and/or general pointers towards a good workflow for such kind of projects.
A useful command will be git cherry-pick, it allows you to select specific commits from a branch.
A general good practice is that commits should be self contained (if applied alone they make sense) and they target a specific feature (in the use case mentioned, that could be a paragraph or a section or a chapter).
In the end, if you would like to apply only specific changes of a commit, that would have to happen manually, someone has to decide which parts to apply and which not. A commit can be edited using git rebase -i <branch name> before being merged. This question might also be useful.
I finally found what worked for me in here. Basically, on my master branch I had to use
git merge --no-commit --no-ff branch-to-merge
This will merge all changes into my master branch but does not immediatly commit the changes so that they can still be staged/unstaged. Then, I can decide what line change to include by staging the line changes I want to keep and discard all other line changes. Finally, I commit all staged line changes et voilĂ , that's what I wanted to get.
Sidenote: I am using gitkraken and as a beginner with git I enjoy using the GUI but the merge part with the options "no-commit" and "no-fast-forwarding" had to be done via the git console (at least I could not find a way to to that using the GUI). Choosing which lines to stage and which to discard is then an easy task via the GUI.
I am new to android and java and working on an app that has a few remaining problems that I haven't resolved yet.
I have a main activity that is a viewPager, with each page being a fragment. If the 4 fragments 3 are extended from ListFragments and one from PreferencesFragment.
The ListFragments have CursorAdapters to get data to and from SQLite databases through providers.
I am able to get data into the database, insert, modify and query the data correctly and fill the list views ok.
My preference setting are to choose different ways of viewing the data in the database.
Not knowing how to do this, I have implemented a process where I modify the cursorLoader query to the provider with a number of different choices of the "WHERE" clause. I have worked out the logic for the preferences as they exist now, implemented the code but had some difficulty finding what to try to trigger the refresh of the ListView.
Since the "dataset" hasn't really changed, no trigger can come from there, plus that would just use the same cursor as it currently exists to run the query again and return the same results (or be smart enough to know that it doesn't need to run).
On Stack Overflow I did find a couple of references to a similar implementation that suggested reStarting the cursor loader, which would then on the reStart read the current values in the stored Preferences file, create a now modified WHERE clause that will show the sub-set of data as specified in the preference settings.
In testing the app now, even with the reStart of the cursorLoader, the ListView isn't getting refreshed.
The only time I can get it to work right is restarting the app. If I stop the app and restart it, the new values are used and the ListView presents as the preferences dictate.
In looking through Stack Overflow and the Android site, I did find another set of APIs that might have been a more natural fit for what I am trying to do, namely the Filter APIs.
First question then would be, did I go in the wrong direction on how to control the "filtered" view of the datbase. Is filtering a better approach and a recommended way of
doing what I am trying to do?
Second question would be related to the fragment lifecycle of my ListFragments to achieve this CursorLoader update.
Thanks for any input on the topic.
-Dan
Found my problem here.
Two things, the way I am trying filtering is working and from what I have seen in the
Android development site, a reference there indicated that the filtering capability is
already implemented in the CursorAdapter, CursorLoader classes I am using.
When my preference settings changed, I did a reStart of the cursorLoader, but had restarted the wrong one.
Problem solved. Any input on is there a better way would be appreciated.
Regards, Dan
I want to configure Phabricator with some customized rules. I am very new to this tool and would appreciate some help or pointers to how to do it.
I want to make sure all reviewers in Revision/Differential should accept all changes before changing a state of the Revision. Once all reviewers accept it then change status of the Revision to Accepted/ready to land.
Currently in my case, I have a revision in which there are different files which need to be reviewed by different reviewers. I expect that, after all reviewers accept these changes only then change status of the Revision to accepted otherwise it should be stayed on status "Needs Review". But, whenever any one of the reviewer from list accept the changes, status of the Revision changes to "Accepted"/"ready to land".
This is not currently supported. You can find discussion of this feature in the upstream, here:
https://secure.phabricator.com/T731
If some of the reviewers are really groups of people (for example, you want to make sure someone who is experienced with Python reviews all Python code, similar to "readability" at Google), you can create a project called "Python Reviewers" and add all the users who are experienced enough to do these reviews to the project. Then write a Herald rule to trigger a "blocking review" by the project whenever a change touches Python source. This will require all Python changes to be reviewed by someone from the project before they are "Accepted".
If your use case is more like "I want alincoln to look at the .c files and htaft to look at the .js files", but no reviewer will be examining the change as a whole, we philosophically discourage this. The most important feedback from code review -- by far -- is high-level feedback about the change as a whole, not feedback about implementation details. We encourage you to try to structure code review so that there is one clear author and one primary reviewer, each of whom are thinking about the entire change in the context of the surrounding software system.
I am new to Plone and trying to learn how to setup and maintain a server. I realize I need to develop a schedule for packing the data. Right now I am just trying to test this using the pack function in the Zope control panel and also the command line (bin/zeopack).
I know in practice I should leave a week's worth of history, but if I pack to 0 days shouldn't I see all edit history disappear? I am not seeing this happen. What am I doing wrong?
You may be confusing the "undo" history with the version history. Packing the database gets rid of old, unused data. That eliminates your ability to undo older transactions.
Version history is not the same. Version history is not considered unused data, and is not eliminated in packs.
If you don't want edit history, turn off versioning.
Let's say I have a user's object, I deleted a property and all things in the web project that used this property (admin pages that updated the property, data layer etc etc).
Now I was told that we need that property, looking at Subversions log it seems the correct code is 3 revisions back.
How can I go back, then somehow get any updates that may have occurred by other devleopers also?
Get the revision number from log for the correct code. Right-click the file you want to rollback. Select Tortoise SVN -> Update to Revision. In dialog fill number of revision you what to update file to, click OK and you are done!
EDIT:- to perform action on command line use svn merge. for more information type following in command line:
svn --help merge ENTER
Here is link to SVN book describing the operation.
You can also have a look at this question, which is also about same issue.
You'll need to know which files you want, and update all to "HEAD" and then those specific files to "HEAD - 3" revision number. Then you'll need to commit those specific files back.
There maybe a better option that I'm not aware of.
If you committed the whole change, and only that change in one go, you can back out that change to your working copy. You could then commit that if it works.
Log Messages > right-click the offending revision > Revert changes from this revision
I've only tried it for a small number of files, I imagine there could be serious conflict headaches.
Theoretically, you can reverse merge. I tried once and subversion absolutely failed to do this--corrupted my working copy or just flat out crashed every single time.
Practically, you might have to update to the old version, save off copies of the files affected, update to latest, manually reverse merge the changes.
It would be a lot more practical (though unsophisticated) if you can just update 3 revs back, recommit it, and have anyone who made changes since recommit them.
Use the log dialog.
Select the revision you want to revert. Right-click on that revision, choose "revert changes from this revision".